/* Uze8 - A Chip8/SChip emulator for Uzebox!
   Video Mode 12 & Petit/FatFS by Uze6666
   Made by Gabriel Alencar

   Enjoy! */

#include <stdbool.h>
#include <avr/io.h>
#include <stdlib.h>
#include <string.h>
#include <avr/pgmspace.h>
#include <uzebox.h>
#include <petitfatfs/pff.h>

#include "patches.inc"
#include "font-8x8.inc"

const char chip8_fontset[80] PROGMEM={
	0xF0, 0x90, 0x90, 0x90, 0xF0, //0
	0x20, 0x60, 0x20, 0x20, 0x70, //1
	0xF0, 0x10, 0xF0, 0x80, 0xF0, //2
	0xF0, 0x10, 0xF0, 0x10, 0xF0, //3
	0x90, 0x90, 0xF0, 0x10, 0x10, //4
	0xF0, 0x80, 0xF0, 0x10, 0xF0, //5
	0xF0, 0x80, 0xF0, 0x90, 0xF0, //6
	0xF0, 0x10, 0x20, 0x40, 0x40, //7
	0xF0, 0x90, 0xF0, 0x90, 0xF0, //8
	0xF0, 0x90, 0xF0, 0x10, 0xF0, //9
	0xF0, 0x90, 0xF0, 0x90, 0x90, //A
	0xE0, 0x90, 0xE0, 0x90, 0xE0, //B
	0xF0, 0x80, 0x80, 0x80, 0xF0, //C
	0xE0, 0x90, 0x90, 0x90, 0xE0, //D
	0xF0, 0x80, 0xF0, 0x80, 0xF0, //E
	0xF0, 0x80, 0xF0, 0x80, 0x80  //F
};

//CPU emulation
unsigned char memory[3584];
unsigned short opcode;
unsigned short pc;
unsigned short sp;
unsigned char V[16];
unsigned short stack[16];
unsigned short I;
//Timers 60Hz
unsigned char delay_timer;
unsigned char sound_timer;
//Misc
unsigned char choice, menu, col;

void RunCycle();
void InitMenu();
void DrawMenu();
void LoadDemo();
void LoadRH();

void usPrint(unsigned char x, unsigned char y, const char *string) {
	if (y > 0 || x == 0) { //Only draw Uze8 Name at Scanline 1
		unsigned char i = 0;
		unsigned char fval;
		
		unsigned char c = pgm_read_byte(&(string[i++]));
		do {
			for (int i = 0; i < 8; ++i) {
				fval = pgm_read_byte(&font[((c - 32) * 8) + i]);
				BlitSprite(x, (y * 8) + i, &fval, 1);
			}
			x += 8;
			c = pgm_read_byte(&(string[i++]));
		} while (c != 0);
	}
}

void usPrintRam(unsigned char x, unsigned char y, const char *string) {
	unsigned char i = 0;
	unsigned char fval;
	
	unsigned char c = string[i++];
	do {
		for (int i = 0; i < 8; ++i) {
			fval = pgm_read_byte(&font[((c - 32) * 8) + i]);
			BlitSprite(x, (y * 8) + i, &fval, 1);
		}
		x += 8;
		c = string[i++];
	} while (c != 0);
}

unsigned char ReadInput(unsigned char KeyNum) {
	if ((ReadJoypad(0) & BTN_START || ReadJoypad(0) & BTN_A) && (KeyNum == 0x5 || KeyNum == 0xF)) {
		return 1;
	} else if ((ReadJoypad(0) & BTN_UP) && KeyNum == 0x2) {
		return 1;
	} else if ((ReadJoypad(0) & BTN_DOWN) && KeyNum == 0x8) {
		return 1;
	} else if ((ReadJoypad(0) & BTN_LEFT) && KeyNum == 0x4) {
		return 1;
	} else if ((ReadJoypad(0) & BTN_RIGHT) && KeyNum == 0x6) {
		return 1;
	} else {
		return 0;
	}
}

int main() {
	unsigned int OldJoy = 0;
	
	InitMusicPlayer(uze8patch);
	InitMenu();
	
	while(1) {
		if (menu == 1) {		
			if (ReadJoypad(0) & BTN_DOWN & ((ReadJoypad(0) & BTN_DOWN) ^ (OldJoy & BTN_DOWN))) {
				if (choice < 3)
					choice++;
				else
					choice = 0;
					
				TriggerFx(0, 0xff, true);
				DrawMenu();
			} else if (ReadJoypad(0) & BTN_UP & ((ReadJoypad(0) & BTN_UP) ^ (OldJoy & BTN_UP))) {
				if (choice > 0)
					choice--;
				else
					choice = 3;
					
				TriggerFx(0, 0xff, true);
				DrawMenu();
			} else if (ReadJoypad(0) & BTN_START & ((ReadJoypad(0) & BTN_START) ^ (OldJoy & BTN_START))) {
				if (choice == 3) {
					//About Menu
					ClearVram();
					//                               MAX|
					usPrint(0, 0, PSTR("Uze8 Chip8/SChip"));
					usPrint(12, 1, PSTR("Gabriel (GSA)"));
					usPrint(24, 3, PSTR("Video & SD"));
					usPrint(36, 4, PSTR("Uze6666"));
					usPrint(0, 6, PSTR("Ver. 1.0.5"));
					usPrint(12, 7, PSTR("Press Up/Down"));
				} else if (choice == 2) {
					//Help Menu
					ClearVram();
					//                               MAX|
					usPrint(0, 0, PSTR("L - Back to Menu"));
					usPrint(0, 1, PSTR("R - Reset Game"));
					usPrint(0, 2, PSTR("Select - Change"));
					usPrint(0, 3, PSTR("Color palette"));
					usPrint(0, 4, PSTR("A - Select ROM"));
					usPrint(0, 5, PSTR("on SD Browser"));
					usPrint(12, 7, PSTR("Press Up/Down"));
				} else {
					//Clear RAM
					for (int i = 0; i <= sizeof(memory); ++i)
						memory[i] = 0;
					
					//Load ROM
					if (choice == 0) {
						FATFS fs;
						FILINFO fno;
						DIR dir;
						FRESULT res;
						WORD br;
						
						pf_mount(&fs);
						
						/* File Browser */
						int lCount = 4, choice2 = 0;
						bool UpdateList = true;
						
						while(1) {
							if (UpdateList) {
								UpdateList = false;
								
								ClearVram();
							
								usPrint(0, 4, PSTR(">"));
								usPrint(120, 4, PSTR("<"));
								usPrint(0, 0, PSTR("== SD Browser =="));
							
								lCount = 4;
							
								res = pf_opendir(&dir, "/");
								for (;;) {
									res = pf_readdir(&dir, &fno);
									if (res != FR_OK || fno.fname[0] == 0) break;
									if (fno.fattrib & AM_DIR) {
										//Nothing to do Here!
									} else {
										if (lCount - choice2 > 0 && lCount - choice2 <= 8) {
											usPrintRam(64 - ((strlen(fno.fname) * 8) / 2), lCount - choice2, fno.fname);
										} else if (lCount - choice2 > 8) {
											break;
										}
										
										lCount++;
									}
								}
							}	
							
							if (ReadJoypad(0) & BTN_DOWN & ((ReadJoypad(0) & BTN_DOWN) ^ (OldJoy & BTN_DOWN))) {
								if (choice2 < lCount - 5) choice2++;
								TriggerFx(0, 0xff, true);
								UpdateList = true;
							} else if (ReadJoypad(0) & BTN_UP & ((ReadJoypad(0) & BTN_UP) ^ (OldJoy & BTN_UP))) {
								if (choice2 > 0) choice2--;
								TriggerFx(0, 0xff, true);
								UpdateList = true;
							} else if (ReadJoypad(0) & BTN_A & ((ReadJoypad(0) & BTN_A) ^ (OldJoy & BTN_A))) {
								res = pf_opendir(&dir, "/");
								for (int i = 0; i <= choice2; ++i) {
									res = pf_readdir(&dir, &fno);
									if (fno.fattrib & AM_DIR) {
										//Nothing to do Here!
									} else {
										if (i == choice2) {res = pf_open(fno.fname);}
									}
								}
								res = pf_read(&memory, 3216, &br);
								break;
							}
							
							OldJoy = ReadJoypad(0);
							
							WaitVsync(1);
						}
						
						pf_mount(NULL);
					} else if (choice == 1) {
						//Demo ROM
						LoadDemo();
					}
					
					ClearVram();
					
					//Chip8 Game 64x32
					SetVramPointer(&memory[sizeof(memory) - 256]);
					SetSubVideoMode(0);
					
					//Program Counter Reset to 512 (Prg Start)
					pc = 0x200;
					
					//Run!
					menu = 0;
				}
			}
			
			OldJoy = ReadJoypad(0);
		
			WaitVsync(1);
		} else {
			RunCycle();
			
			//Input
			if (ReadJoypad(0) & BTN_SELECT & ((ReadJoypad(0) & BTN_SELECT) ^ (OldJoy & BTN_SELECT))) {
				//Change Palette
				if (col < 2)
					col++;
				else
					col = 0;
					
				if (col == 0) {
					SetPalette(0xE0, 0x40);
				} else if (col == 1) {
					SetPalette(0x40, 0x35);
				} else if (col == 2) {
					SetPalette(0xFF, 0x00);
				}
			}			
			if (ReadJoypad(0) & BTN_SL & ((ReadJoypad(0) & BTN_SL) ^ (OldJoy & BTN_SL))) {
				//Go back to Menu
				menu = 1;
				InitMenu();
			}
			if (ReadJoypad(0) & BTN_SR & ((ReadJoypad(0) & BTN_SR) ^ (OldJoy & BTN_SR)))
				pc = 0x200;
			
			OldJoy = ReadJoypad(0);
		}
	}
}

void RunCycle() {
	// Fetch opcode
	opcode = memory[pc - 0x200] << 8 | memory[(pc - 0x200) + 1];
				
	// Process opcode
	switch(opcode & 0xF000) {
		case 0x0000:
			switch(opcode & 0x00F0) {
				case 0x00E0:
					switch(opcode & 0x000F) {
						case 0x0000: // 0x00E0: Clears the screen
							ClearVram();
							pc += 2;
							break;

						case 0x000E: // 0x00EE: Returns from subroutine
							--sp;			// 16 levels of stack, decrease stack pointer to prevent overwrite
							pc = stack[sp];	// Put the stored return address from the stack back into the program counter
							pc += 2;		// Don't forget to increase the program counter!
							break;
								
					}
					break;
						
				case 0x00F0:
					switch(opcode & 0x000F) {
						case 0x000E:
							//*SCHIP Extended Res Off
							pc += 2;
							break;
							
						case 0x000F:
							//*SCHIP Extended Res On
							SetVramPointer(&memory[sizeof(memory) - 1024]);
							SetSubVideoMode(1);
							pc += 2;
							break;
							
					}
					break;	
			}
			break;

		case 0x1000: // 0x1NNN: Jumps to address NNN
			pc = opcode & 0x0FFF;
			break;

		case 0x2000: // 0x2NNN: Calls subroutine at NNN.
			stack[sp] = pc;			// Store current address in stack
			++sp;					// Increment stack pointer
			pc = opcode & 0x0FFF;	// Set the program counter to the address at NNN
			break;
			
		case 0x3000: // 0x3XNN: Skips the next instruction if VX equals NN
			if(V[(opcode & 0x0F00) >> 8] == (opcode & 0x00FF))
				pc += 4;
			else
				pc += 2;
				
			break;
			
		case 0x4000: // 0x4XNN: Skips the next instruction if VX doesn't equal NN
			if(V[(opcode & 0x0F00) >> 8] != (opcode & 0x00FF))
				pc += 4;
			else
				pc += 2;
					
			break;
			
		case 0x5000: // 0x5XY0: Skips the next instruction if VX equals VY.
			if(V[(opcode & 0x0F00) >> 8] == V[(opcode & 0x00F0) >> 4])
				pc += 4;
			else
				pc += 2;
					
			break;
			
		case 0x6000: // 0x6XNN: Sets VX to NN.
			V[(opcode & 0x0F00) >> 8] = opcode & 0x00FF;
			pc += 2;
			break;
			
		case 0x7000: // 0x7XNN: Adds NN to VX.
			V[(opcode & 0x0F00) >> 8] += opcode & 0x00FF;
			pc += 2;
			break;
			
		case 0x8000:
			switch(opcode & 0x000F) {
				case 0x0000: // 0x8XY0: Sets VX to the value of VY
					V[(opcode & 0x0F00) >> 8] = V[(opcode & 0x00F0) >> 4];
					pc += 2;
					break;

				case 0x0001: // 0x8XY1: Sets VX to "VX OR VY"
					V[(opcode & 0x0F00) >> 8] |= V[(opcode & 0x00F0) >> 4];
					pc += 2;
					break;

				case 0x0002: // 0x8XY2: Sets VX to "VX AND VY"
					V[(opcode & 0x0F00) >> 8] &= V[(opcode & 0x00F0) >> 4];
					pc += 2;
					break;

				case 0x0003: // 0x8XY3: Sets VX to "VX XOR VY"
					V[(opcode & 0x0F00) >> 8] ^= V[(opcode & 0x00F0) >> 4];
					pc += 2;
					break;

				case 0x0004: // 0x8XY4: Adds VY to VX. VF is set to 1 when there's a carry, and to 0 when there isn't
					if(V[(opcode & 0x00F0) >> 4] > (0xFF - V[(opcode & 0x0F00) >> 8]))
						V[0xF] = 1; //carry
					else
						V[0xF] = 0;
						
					V[(opcode & 0x0F00) >> 8] += V[(opcode & 0x00F0) >> 4];
					pc += 2;
					break;

				case 0x0005: // 0x8XY5: VY is subtracted from VX. VF is set to 0 when there's a borrow, and 1 when there isn't
					if(V[(opcode & 0x00F0) >> 4] > V[(opcode & 0x0F00) >> 8])
						V[0xF] = 0; // there is a borrow
					else
						V[0xF] = 1;
						
					V[(opcode & 0x0F00) >> 8] -= V[(opcode & 0x00F0) >> 4];
					pc += 2;
					break;

				case 0x0006: // 0x8XY6: Shifts VX right by one. VF is set to the value of the least significant bit of VX before the shift
					V[0xF] = V[(opcode & 0x0F00) >> 8] & 0x1;
					V[(opcode & 0x0F00) >> 8] >>= 1;
					pc += 2;
					break;

				case 0x0007: // 0x8XY7: Sets VX to VY minus VX. VF is set to 0 when there's a borrow, and 1 when there isn't
					if(V[(opcode & 0x0F00) >> 8] > V[(opcode & 0x00F0) >> 4])	// VY-VX
						V[0xF] = 0; // there is a borrow
					else
						V[0xF] = 1;
						
					V[(opcode & 0x0F00) >> 8] = V[(opcode & 0x00F0) >> 4] - V[(opcode & 0x0F00) >> 8];
					pc += 2;	
					break;

				case 0x000E: // 0x8XYE: Shifts VX left by one. VF is set to the value of the most significant bit of VX before the shift
					V[0xF] = V[(opcode & 0x0F00) >> 8] >> 7;
					V[(opcode & 0x0F00) >> 8] <<= 1;
					pc += 2;
					break;
			}
			break;
			
		case 0x9000: // 0x9XY0: Skips the next instruction if VX doesn't equal VY
			if(V[(opcode & 0x0F00) >> 8] != V[(opcode & 0x00F0) >> 4])
				pc += 4;
			else
				pc += 2;
					
			break;

		case 0xA000: // ANNN: Sets I to the address NNN
			I = opcode & 0x0FFF;
			pc += 2;
			break;
			
		case 0xB000: // BNNN: Jumps to the address NNN plus V0
			pc = (opcode & 0x0FFF) + V[0];
			break;
			
		case 0xC000: // CXNN: Sets VX to a random number and NN
			V[(opcode & 0x0F00) >> 8] = (rand() % 0xFF) & (opcode & 0x00FF);
			pc += 2;
			break;
			
		case 0xD000: {
				/* DXYN: Draws a sprite at coordinate (VX, VY) that has a width of 8 pixels and a height of N pixels.
				   Each row of 8 pixels is read as bit-coded starting from memory location I;
				   I value doesn't change after the execution of this instruction.
				   VF is set to 1 if any screen pixels are flipped from set to unset when the sprite is drawn,
				   and to 0 if that doesn't happen */
			
				unsigned char x = V[(opcode & 0x0F00) >> 8];
				unsigned char y = V[(opcode & 0x00F0) >> 4];
				unsigned char height = opcode & 0x000F;
				unsigned char fval;
				
				if (I >= 0x200) {
					V[0xF] = BlitSprite(x, y, &memory[I - 0x200], height);
				} else if (I <= 0x50) {
					for (int i = 0; i <= 4; ++i) {
						fval = pgm_read_byte(&(chip8_fontset[I + i]));
						V[0xF] = BlitSprite(x, y + i, &fval, 1);
					}					
				}			
				
				WaitVsync(1);
				pc += 2;
			}
			break;
			
		case 0xE000:
			switch(opcode & 0x00FF) {
				case 0x009E: // EX9E: Skips the next instruction if the key stored in VX is pressed
					if(ReadInput(V[(opcode & 0x0F00) >> 8]) != 0)
						pc += 4;
					else
						pc += 2;
					
					break;
				
				case 0x00A1: // EXA1: Skips the next instruction if the key stored in VX isn't pressed
					if(ReadInput(V[(opcode & 0x0F00) >> 8]) == 0)
						pc += 4;
					else
						pc += 2;
					
					break;
			}
			break;
			
		case 0xF000:
			switch(opcode & 0x00FF) {
				case 0x0007: // FX07: Sets VX to the value of the delay timer
					V[(opcode & 0x0F00) >> 8] = delay_timer;
					pc += 2;
					break;
				
				case 0x000A: {
						// FX0A: A key press is awaited, and then stored in VX
						bool keyPress = false;

						for(int i = 0; i < 16; ++i) {
							if(ReadInput(i) != 0) {
								V[(opcode & 0x0F00) >> 8] = i;
								keyPress = true;
							}
						}

						// If we didn't received a keypress, skip this cycle and try again.
						if(!keyPress)
							return;

						pc += 2;
					}
					break;
				
				case 0x0015: // FX15: Sets the delay timer to VX
					delay_timer = V[(opcode & 0x0F00) >> 8];
					pc += 2;
					break;

				case 0x0018: // FX18: Sets the sound timer to VX
					sound_timer = V[(opcode & 0x0F00) >> 8];
					pc += 2;
					break;

				case 0x001E: // FX1E: Adds VX to I
					if(I + V[(opcode & 0x0F00) >> 8] > 0xFFF)	// VF is set to 1 when range overflow (I+VX>0xFFF), and 0 when there isn't.
						V[0xF] = 1;
					else
						V[0xF] = 0;
						
					I += V[(opcode & 0x0F00) >> 8];
					pc += 2;	
					break;

				case 0x0029: // FX29: Sets I to the location of the sprite for the character in VX. Characters 0-F (in hexadecimal) are represented by a 4x5 font
					I = V[(opcode & 0x0F00) >> 8] * 0x5;
					pc += 2;
					break;

				case 0x0033: // FX33: Stores the Binary-coded decimal representation of VX at the addresses I, I plus 1, and I plus 2
					memory[I - 0x200]     = V[(opcode & 0x0F00) >> 8] / 100;
					memory[(I + 1) - 0x200] = (V[(opcode & 0x0F00) >> 8] / 10) % 10;
					memory[(I + 2) - 0x200] = (V[(opcode & 0x0F00) >> 8] % 100) % 10;
					pc += 2;
					break;

				case 0x0055: // FX55: Stores V0 to VX in memory starting at address I
					for (int i = 0; i <= ((opcode & 0x0F00) >> 8); ++i)
						memory[(I + i) - 0x200] = V[i];

					// On the original interpreter, when the operation is done, I = I + X + 1.
					I += ((opcode & 0x0F00) >> 8) + 1;
					pc += 2;
					break;

				case 0x0065: // FX65: Fills V0 to VX with values from memory starting at address I
					for (int i = 0; i <= ((opcode & 0x0F00) >> 8); ++i)
						V[i] = memory[(I + i) - 0x200];

					// On the original interpreter, when the operation is done, I = I + X + 1.
					I += ((opcode & 0x0F00) >> 8) + 1;
					pc += 2;
					break;
			}
			break;
	}

	// Update timers
	if(delay_timer > 0)
		--delay_timer;

	if(sound_timer > 0) {
		if(sound_timer == 1)
			TriggerFx(1, 0xff, true); //Beep
				
		--sound_timer;
	}
}

void InitMenu() {
	//Menu 128x64
	SetVramPointer(&memory[sizeof(memory) - 1024]);
	SetSubVideoMode(1);
	SetPalette(0xE0, 0x40);
	
	menu = 1;
	
	DrawMenu();
}

void DrawMenu() {
	ClearVram();
	
	//ALWAYS use PSTR to save Ram!!!
	usPrint(0, 4, PSTR(">"));
	usPrint(120, 4, PSTR("<"));
	usPrint(0, 0, PSTR(" ==== Uze8 ==== "));
	
	usPrint(36, 4 - choice, PSTR("SD Card"));
	usPrint(32, 5 - choice, PSTR("Demo ROM"));
	usPrint(48, 6 - choice, PSTR("Help"));
	usPrint(44, 7 - choice, PSTR("About"));
}

void LoadDemo() {
	//Built-in Trip8 Demo
	memory[0x0] = 0x12; memory[0x1] = 0x14; memory[0x2] = 0x52; memory[0x3] = 0x45; memory[0x4] = 0x56; memory[0x5] = 0x49; memory[0x6] = 0x56; memory[0x7] = 0x41;
	memory[0x8] = 0x4C; memory[0x9] = 0x53; memory[0xA] = 0x54; memory[0xB] = 0x55; memory[0xC] = 0x44; memory[0xD] = 0x49; memory[0xE] = 0x4F; memory[0xF] = 0x53;
	memory[0x10] = 0x32; memory[0x11] = 0x30; memory[0x12] = 0x30; memory[0x13] = 0x38; memory[0x15] = 0xE0; memory[0x16] = 0x6D; memory[0x17] = 0x20; memory[0x18] = 0xFD;
	memory[0x19] = 0x15; memory[0x1A] = 0x23; memory[0x1B] = 0xBE; memory[0x1C] = 0x23; memory[0x1D] = 0xC6; memory[0x1E] = 0x6D; memory[0x1F] = 0x40; memory[0x20] = 0xFD;
	memory[0x21] = 0x15; memory[0x22] = 0x23; memory[0x23] = 0xBE; memory[0x24] = 0x23; memory[0x25] = 0xC6; memory[0x26] = 0x6D; memory[0x27] = 0x20; memory[0x28] = 0xFD;
	memory[0x29] = 0x15; memory[0x2A] = 0x23; memory[0x2B] = 0xBE; memory[0x2C] = 0xA4; memory[0x2D] = 0x83; memory[0x2E] = 0x24; memory[0x2F] = 0x48; memory[0x30] = 0x6D;
	memory[0x31] = 0x80; memory[0x32] = 0xFD; memory[0x33] = 0x15; memory[0x34] = 0x23; memory[0x35] = 0xBE; memory[0x36] = 0xA4; memory[0x37] = 0x83; memory[0x38] = 0x24;
	memory[0x39] = 0x48; memory[0x3A] = 0xA5; memory[0x3B] = 0x83; memory[0x3C] = 0x24; memory[0x3D] = 0x48; memory[0x3E] = 0x6D; memory[0x40] = 0x6B; memory[0x42] = 0x22;
	memory[0x43] = 0xC6; memory[0x44] = 0x4B; memory[0x46] = 0x22; memory[0x47] = 0xE4; memory[0x48] = 0x4B; memory[0x49] = 0x01; memory[0x4A] = 0x23; memory[0x4B] = 0x86;
	memory[0x4C] = 0x4B; memory[0x4D] = 0x02; memory[0x4E] = 0x22; memory[0x4F] = 0xEC; memory[0x50] = 0x4B; memory[0x51] = 0x03; memory[0x52] = 0x23; memory[0x53] = 0x86;
	memory[0x54] = 0x4B; memory[0x55] = 0x04; memory[0x56] = 0x22; memory[0x57] = 0xF4; memory[0x58] = 0x4B; memory[0x59] = 0x05; memory[0x5A] = 0x23; memory[0x5B] = 0x86;
	memory[0x5C] = 0x60; memory[0x5D] = 0x01; memory[0x5E] = 0xF0; memory[0x5F] = 0x15; memory[0x60] = 0x23; memory[0x61] = 0xBE; memory[0x62] = 0x7D; memory[0x63] = 0x01;
	memory[0x64] = 0x60; memory[0x65] = 0x3F; memory[0x66] = 0x8C; memory[0x67] = 0xD0; memory[0x68] = 0x8C; memory[0x69] = 0x02; memory[0x6A] = 0x4C; memory[0x6C] = 0x22;
	memory[0x6D] = 0x70; memory[0x6E] = 0x12; memory[0x6F] = 0x44; memory[0x70] = 0x4B; memory[0x72] = 0x22; memory[0x73] = 0x90; memory[0x74] = 0x4B; memory[0x75] = 0x01;
	memory[0x76] = 0x22; memory[0x77] = 0xCC; memory[0x78] = 0x4B; memory[0x79] = 0x02; memory[0x7A] = 0x22; memory[0x7B] = 0xA2; memory[0x7C] = 0x4B; memory[0x7D] = 0x03;
	memory[0x7E] = 0x22; memory[0x7F] = 0xD4; memory[0x80] = 0x4B; memory[0x81] = 0x04; memory[0x82] = 0x22; memory[0x83] = 0xB4; memory[0x84] = 0x4B; memory[0x85] = 0x05;
	memory[0x86] = 0x22; memory[0x87] = 0xDC; memory[0x88] = 0x7B; memory[0x89] = 0x01; memory[0x8A] = 0x4B; memory[0x8B] = 0x06; memory[0x8C] = 0x6B; memory[0x8F] = 0xEE;
	memory[0x90] = 0x23; memory[0x91] = 0x08; memory[0x92] = 0xC9; memory[0x93] = 0x03; memory[0x94] = 0x89; memory[0x95] = 0x94; memory[0x96] = 0x89; memory[0x97] = 0x94;
	memory[0x98] = 0x89; memory[0x99] = 0x94; memory[0x9A] = 0x89; memory[0x9B] = 0x94; memory[0x9C] = 0x89; memory[0x9D] = 0x94; memory[0x9E] = 0x23; memory[0x9F] = 0x66;
	memory[0xA1] = 0xEE; memory[0xA2] = 0x22; memory[0xA3] = 0xFC; memory[0xA4] = 0xC9; memory[0xA5] = 0x03; memory[0xA6] = 0x89; memory[0xA7] = 0x94; memory[0xA8] = 0x89;
	memory[0xA9] = 0x94; memory[0xAA] = 0x89; memory[0xAB] = 0x94; memory[0xAC] = 0x89; memory[0xAD] = 0x94; memory[0xAE] = 0x89; memory[0xAF] = 0x94; memory[0xB0] = 0x23;
	memory[0xB1] = 0x66; memory[0xB3] = 0xEE; memory[0xB4] = 0x23; memory[0xB5] = 0x18; memory[0xB6] = 0xC9; memory[0xB7] = 0x03; memory[0xB8] = 0x89; memory[0xB9] = 0x94;
	memory[0xBA] = 0x89; memory[0xBB] = 0x94; memory[0xBC] = 0x89; memory[0xBD] = 0x94; memory[0xBE] = 0x89; memory[0xBF] = 0x94; memory[0xC0] = 0x89; memory[0xC1] = 0x94;
	memory[0xC2] = 0x23; memory[0xC3] = 0x66; memory[0xC5] = 0xEE; memory[0xC6] = 0x6E; memory[0xC8] = 0x23; memory[0xC9] = 0x08; memory[0xCB] = 0xEE; memory[0xCC] = 0x23;
	memory[0xCD] = 0x66; memory[0xCE] = 0x6E; memory[0xD0] = 0x22; memory[0xD1] = 0xFC; memory[0xD3] = 0xEE; memory[0xD4] = 0x23; memory[0xD5] = 0x66; memory[0xD6] = 0x6E;
	memory[0xD8] = 0x23; memory[0xD9] = 0x18; memory[0xDB] = 0xEE; memory[0xDC] = 0x23; memory[0xDD] = 0x66; memory[0xDE] = 0x6E; memory[0xE0] = 0x23; memory[0xE1] = 0x08;
	memory[0xE3] = 0xEE; memory[0xE4] = 0x23; memory[0xE5] = 0x08; memory[0xE6] = 0x7E; memory[0xE7] = 0x03; memory[0xE8] = 0x23; memory[0xE9] = 0x08; memory[0xEB] = 0xEE;
	memory[0xEC] = 0x22; memory[0xED] = 0xFC; memory[0xEE] = 0x7E; memory[0xEF] = 0x02; memory[0xF0] = 0x22; memory[0xF1] = 0xFC; memory[0xF3] = 0xEE; memory[0xF4] = 0x23;
	memory[0xF5] = 0x18; memory[0xF6] = 0x7E; memory[0xF7] = 0x02; memory[0xF8] = 0x23; memory[0xF9] = 0x18; memory[0xFB] = 0xEE; memory[0xFC] = 0x6C; memory[0xFE] = 0x23;
	memory[0xFF] = 0x3A; memory[0x100] = 0x23; memory[0x101] = 0x3A; memory[0x102] = 0x23; memory[0x103] = 0x3A; memory[0x104] = 0x23; memory[0x105] = 0x3A; memory[0x107] = 0xEE;
	memory[0x108] = 0x6C; memory[0x10A] = 0x23; memory[0x10B] = 0x24; memory[0x10C] = 0x23; memory[0x10D] = 0x24; memory[0x10E] = 0x23; memory[0x10F] = 0x24; memory[0x110] = 0x23;
	memory[0x111] = 0x24; memory[0x112] = 0x23; memory[0x113] = 0x24; memory[0x114] = 0x23; memory[0x115] = 0x24; memory[0x117] = 0xEE; memory[0x118] = 0x6C; memory[0x11A] = 0x23;
	memory[0x11B] = 0x50; memory[0x11C] = 0x23; memory[0x11D] = 0x50; memory[0x11E] = 0x23; memory[0x11F] = 0x50; memory[0x120] = 0x23; memory[0x121] = 0x50; memory[0x123] = 0xEE;
	memory[0x124] = 0xA6; memory[0x125] = 0x83; memory[0x126] = 0xFE; memory[0x127] = 0x1E; memory[0x128] = 0xFE; memory[0x129] = 0x1E; memory[0x12A] = 0xFE; memory[0x12B] = 0x1E;
	memory[0x12C] = 0xFE; memory[0x12D] = 0x1E; memory[0x12E] = 0xFC; memory[0x12F] = 0x1E; memory[0x130] = 0xF1; memory[0x131] = 0x65; memory[0x132] = 0xA4; memory[0x133] = 0x7C;
	memory[0x134] = 0xD0; memory[0x135] = 0x14; memory[0x136] = 0x7C; memory[0x137] = 0x02; memory[0x139] = 0xEE; memory[0x13A] = 0xA9; memory[0x13B] = 0x83; memory[0x13C] = 0xFE;
	memory[0x13D] = 0x1E; memory[0x13E] = 0xFE; memory[0x13F] = 0x1E; memory[0x140] = 0xFE; memory[0x141] = 0x1E; memory[0x142] = 0xFE; memory[0x143] = 0x1E; memory[0x144] = 0xFC;
	memory[0x145] = 0x1E; memory[0x146] = 0xF1; memory[0x147] = 0x65; memory[0x148] = 0xA4; memory[0x149] = 0x7C; memory[0x14A] = 0xD0; memory[0x14B] = 0x14; memory[0x14C] = 0x7C;
	memory[0x14D] = 0x02; memory[0x14F] = 0xEE; memory[0x150] = 0xAB; memory[0x151] = 0x83; memory[0x152] = 0xFE; memory[0x153] = 0x1E; memory[0x154] = 0xFE; memory[0x155] = 0x1E;
	memory[0x156] = 0xFE; memory[0x157] = 0x1E; memory[0x158] = 0xFE; memory[0x159] = 0x1E; memory[0x15A] = 0xFC; memory[0x15B] = 0x1E; memory[0x15C] = 0xF1; memory[0x15D] = 0x65;
	memory[0x15E] = 0xA4; memory[0x15F] = 0x7C; memory[0x160] = 0xD0; memory[0x161] = 0x14; memory[0x162] = 0x7C; memory[0x163] = 0x02; memory[0x165] = 0xEE; memory[0x166] = 0x6C;
	memory[0x168] = 0x60; memory[0x169] = 0x1F; memory[0x16A] = 0x8A; memory[0x16B] = 0xD0; memory[0x16C] = 0x8A; memory[0x16D] = 0xC4; memory[0x16E] = 0x8A; memory[0x16F] = 0x02;
	memory[0x170] = 0x8A; memory[0x171] = 0x94; memory[0x172] = 0xAD; memory[0x173] = 0x83; memory[0x174] = 0xFA; memory[0x175] = 0x1E; memory[0x176] = 0xFA; memory[0x177] = 0x1E;
	memory[0x178] = 0xF1; memory[0x179] = 0x65; memory[0x17A] = 0xA4; memory[0x17B] = 0x80; memory[0x17C] = 0xD0; memory[0x17D] = 0x13; memory[0x17E] = 0x7C; memory[0x17F] = 0x01;
	memory[0x180] = 0x3C; memory[0x181] = 0x08; memory[0x182] = 0x13; memory[0x183] = 0x68; memory[0x185] = 0xEE; memory[0x186] = 0x60; memory[0x187] = 0x1F; memory[0x188] = 0x8A;
	memory[0x189] = 0xD0; memory[0x18A] = 0x8A; memory[0x18B] = 0x02; memory[0x18C] = 0x8A; memory[0x18D] = 0x94; memory[0x18E] = 0xAD; memory[0x18F] = 0x83; memory[0x190] = 0xFA;
	memory[0x191] = 0x1E; memory[0x192] = 0xFA; memory[0x193] = 0x1E; memory[0x194] = 0xF1; memory[0x195] = 0x65; memory[0x196] = 0xA4; memory[0x197] = 0x80; memory[0x198] = 0xD0;
	memory[0x199] = 0x13; memory[0x19A] = 0x60; memory[0x19B] = 0x1F; memory[0x19C] = 0x8A; memory[0x19D] = 0xD0; memory[0x19E] = 0x7A; memory[0x19F] = 0x08; memory[0x1A0] = 0x8A;
	memory[0x1A1] = 0x02; memory[0x1A2] = 0x8A; memory[0x1A3] = 0x94; memory[0x1A4] = 0xAD; memory[0x1A5] = 0x83; memory[0x1A6] = 0xFA; memory[0x1A7] = 0x1E; memory[0x1A8] = 0xFA;
	memory[0x1A9] = 0x1E; memory[0x1AA] = 0xF1; memory[0x1AB] = 0x65; memory[0x1AC] = 0xA4; memory[0x1AD] = 0x80; memory[0x1AE] = 0xD0; memory[0x1AF] = 0x13; memory[0x1B1] = 0xEE;
	memory[0x1B2] = 0xA6; memory[0x1B3] = 0x83; memory[0x1B4] = 0xFD; memory[0x1B5] = 0x1E; memory[0x1B6] = 0xF0; memory[0x1B7] = 0x65; memory[0x1B8] = 0x30; memory[0x1BA] = 0xF0;
	memory[0x1BB] = 0x18; memory[0x1BD] = 0xEE; memory[0x1BE] = 0xF0; memory[0x1BF] = 0x07; memory[0x1C0] = 0x30; memory[0x1C2] = 0x13; memory[0x1C3] = 0xBE; memory[0x1C5] = 0xEE;
	memory[0x1C6] = 0x6D; memory[0x1C7] = 0x04; memory[0x1C8] = 0x61; memory[0x1C9] = 0x0C; memory[0x1CA] = 0x60; memory[0x1CB] = 0x1C; memory[0x1CC] = 0x62; memory[0x1CD] = 0x12;
	memory[0x1CE] = 0xA4; memory[0x1CF] = 0x1E; memory[0x1D0] = 0xF2; memory[0x1D1] = 0x1E; memory[0x1D2] = 0xD0; memory[0x1D3] = 0x16; memory[0x1D4] = 0xFD; memory[0x1D5] = 0x15;
	memory[0x1D6] = 0x23; memory[0x1D7] = 0xBE; memory[0x1D8] = 0x60; memory[0x1D9] = 0x14; memory[0x1DA] = 0x62; memory[0x1DB] = 0x0C; memory[0x1DC] = 0xA4; memory[0x1DD] = 0x1E;
	memory[0x1DE] = 0xF2; memory[0x1DF] = 0x1E; memory[0x1E0] = 0xD0; memory[0x1E1] = 0x16; memory[0x1E2] = 0x60; memory[0x1E3] = 0x24; memory[0x1E4] = 0x62; memory[0x1E5] = 0x18;
	memory[0x1E6] = 0xA4; memory[0x1E7] = 0x1E; memory[0x1E8] = 0xF2; memory[0x1E9] = 0x1E; memory[0x1EA] = 0xD0; memory[0x1EB] = 0x16; memory[0x1EC] = 0xFD; memory[0x1ED] = 0x15;
	memory[0x1EE] = 0x23; memory[0x1EF] = 0xBE; memory[0x1F0] = 0x60; memory[0x1F1] = 0x0C; memory[0x1F2] = 0x62; memory[0x1F3] = 0x06; memory[0x1F4] = 0xA4; memory[0x1F5] = 0x1E;
	memory[0x1F6] = 0xF2; memory[0x1F7] = 0x1E; memory[0x1F8] = 0xD0; memory[0x1F9] = 0x16; memory[0x1FA] = 0x60; memory[0x1FB] = 0x2C; memory[0x1FC] = 0x62; memory[0x1FD] = 0x1E;
	memory[0x1FE] = 0xA4; memory[0x1FF] = 0x1E; memory[0x200] = 0xF2; memory[0x201] = 0x1E; memory[0x202] = 0xD0; memory[0x203] = 0x16; memory[0x204] = 0xFD; memory[0x205] = 0x15;
	memory[0x206] = 0x23; memory[0x207] = 0xBE; memory[0x208] = 0xA4; memory[0x209] = 0x1E; memory[0x20A] = 0x60; memory[0x20B] = 0x04; memory[0x20C] = 0xD0; memory[0x20D] = 0x16;
	memory[0x20E] = 0x60; memory[0x20F] = 0x34; memory[0x210] = 0x62; memory[0x211] = 0x24; memory[0x212] = 0xA4; memory[0x213] = 0x1E; memory[0x214] = 0xF2; memory[0x215] = 0x1E;
	memory[0x216] = 0xD0; memory[0x217] = 0x16; memory[0x218] = 0xFD; memory[0x219] = 0x15; memory[0x21A] = 0x23; memory[0x21B] = 0xBE; memory[0x21D] = 0xEE; memory[0x220] = 0x0C;
	memory[0x221] = 0x11; memory[0x222] = 0x11; memory[0x223] = 0x10; memory[0x226] = 0x95; memory[0x227] = 0x55; memory[0x228] = 0x95; memory[0x229] = 0xCD; memory[0x22C] = 0x53;
	memory[0x22D] = 0x55; memory[0x22E] = 0x55; memory[0x22F] = 0x33; memory[0x230] = 0x40; memory[0x231] = 0x40; memory[0x232] = 0x44; memory[0x233] = 0x42; memory[0x234] = 0x41;
	memory[0x235] = 0x46; memory[0x237] = 0x40; memory[0x238] = 0x6A; memory[0x239] = 0x4A; memory[0x23A] = 0x4A; memory[0x23B] = 0x46; memory[0x23D] = 0x20; memory[0x23E] = 0x69;
	memory[0x23F] = 0xAA; memory[0x240] = 0xAA; memory[0x241] = 0x69; memory[0x244] = 0x20; memory[0x245] = 0x90; memory[0x246] = 0x88; memory[0x247] = 0x30; memory[0x248] = 0x64;
	memory[0x249] = 0x01; memory[0x24A] = 0x65; memory[0x24B] = 0x07; memory[0x24C] = 0x62; memory[0x24E] = 0x63; memory[0x250] = 0x60; memory[0x252] = 0x81; memory[0x253] = 0x30;
	memory[0x254] = 0xD0; memory[0x255] = 0x11; memory[0x256] = 0x71; memory[0x257] = 0x08; memory[0x258] = 0xF4; memory[0x259] = 0x1E; memory[0x25A] = 0xD0; memory[0x25B] = 0x11;
	memory[0x25C] = 0x71; memory[0x25D] = 0x08; memory[0x25E] = 0xF4; memory[0x25F] = 0x1E; memory[0x260] = 0xD0; memory[0x261] = 0x11; memory[0x262] = 0x71; memory[0x263] = 0x08;
	memory[0x264] = 0xF4; memory[0x265] = 0x1E; memory[0x266] = 0xD0; memory[0x267] = 0x11; memory[0x268] = 0xF4; memory[0x269] = 0x1E; memory[0x26A] = 0x70; memory[0x26B] = 0x08;
	memory[0x26C] = 0x30; memory[0x26D] = 0x40; memory[0x26E] = 0x14; memory[0x26F] = 0x52; memory[0x270] = 0x73; memory[0x271] = 0x03; memory[0x272] = 0x83; memory[0x273] = 0x52;
	memory[0x274] = 0x72; memory[0x275] = 0x01; memory[0x276] = 0x32; memory[0x277] = 0x08; memory[0x278] = 0x14; memory[0x279] = 0x50; memory[0x27B] = 0xEE; memory[0x27C] = 0x60;
	memory[0x27D] = 0xB0; memory[0x27E] = 0xF0; memory[0x27F] = 0x60; memory[0x280] = 0x40; memory[0x281] = 0xA0; memory[0x282] = 0x40; memory[0x28D] = 0x06; memory[0x291] = 0xC6;
	memory[0x295] = 0xDB; memory[0x299] = 0x30; memory[0x2AC] = 0x5F; memory[0x2AD] = 0x06; memory[0x2B0] = 0xFE; memory[0x2B1] = 0xC6; memory[0x2B4] = 0xD3; memory[0x2B5] = 0xFB;
	memory[0x2B8] = 0xF0; memory[0x2B9] = 0xF0; memory[0x2CC] = 0x06; memory[0x2D0] = 0xF6; memory[0x2D4] = 0xFB; memory[0x2D5] = 0xE0; memory[0x2D8] = 0xF0; memory[0x2EC] = 0x06;
	memory[0x2ED] = 0x06; memory[0x2F1] = 0xC6; memory[0x2F5] = 0xDB; memory[0x2F9] = 0x30; memory[0x30C] = 0x06; memory[0x30D] = 0x06; memory[0x311] = 0xC6; memory[0x314] = 0x03;
	memory[0x315] = 0xF1; memory[0x318] = 0x30; memory[0x319] = 0xE0; memory[0x32C] = 0x06; memory[0x330] = 0xC6; memory[0x334] = 0xD9; memory[0x338] = 0xE0; memory[0x34C] = 0x2F;
	memory[0x34D] = 0x06; memory[0x350] = 0xFF; memory[0x351] = 0xC6; memory[0x354] = 0x69; memory[0x355] = 0xDB; memory[0x358] = 0xE0; memory[0x359] = 0x30; memory[0x36C] = 0x06;
	memory[0x370] = 0x76; memory[0x374] = 0xF3; memory[0x375] = 0xE0; memory[0x378] = 0x30; memory[0x397] = 0x1F; memory[0x398] = 0x07; memory[0x399] = 0x0F; memory[0x39B] = 0xFF;
	memory[0x39C] = 0xFE; memory[0x39D] = 0xFC; memory[0x39E] = 0x7E; memory[0x3A1] = 0x3E; memory[0x3A2] = 0x7C; memory[0x3B7] = 0x2F; memory[0x3B8] = 0x1B; memory[0x3B9] = 0x07;
	memory[0x3BB] = 0xFF; memory[0x3BC] = 0xF0; memory[0x3BD] = 0xFB; memory[0x3BE] = 0x1F; memory[0x3C1] = 0xFE; memory[0x3C2] = 0xB0; memory[0x3D7] = 0x17; memory[0x3D8] = 0x0F;
	memory[0x3DB] = 0xFF; memory[0x3DC] = 0xF8; memory[0x3DD] = 0x7E; memory[0x3DE] = 0x0F; memory[0x3E0] = 0x0C; memory[0x3E1] = 0x14; memory[0x3E2] = 0x38; memory[0x3F7] = 0x2F;
	memory[0x3F8] = 0x0B; memory[0x3F9] = 0x0F; memory[0x3FB] = 0xFE; memory[0x3FC] = 0xE0; memory[0x3FD] = 0xFC; memory[0x3FE] = 0x3F; memory[0x401] = 0x7E; memory[0x402] = 0xFC;
	memory[0x417] = 0x17; memory[0x418] = 0x1F; memory[0x419] = 0x03; memory[0x41B] = 0xFF; memory[0x41C] = 0xF0; memory[0x41D] = 0xFF; memory[0x41E] = 0x1F; memory[0x41F] = 0x80;
	memory[0x421] = 0xFE; memory[0x437] = 0x0B; memory[0x438] = 0x0F; memory[0x43B] = 0xFE; memory[0x43C] = 0xF8; memory[0x43D] = 0x7E; memory[0x43E] = 0x0F; memory[0x440] = 0x1C;
	memory[0x441] = 0x3E; memory[0x457] = 0x17; memory[0x458] = 0x17; memory[0x459] = 0x0F; memory[0x45B] = 0xFE; memory[0x45C] = 0xC0; memory[0x45D] = 0xF8; memory[0x45E] = 0x3F;
	memory[0x461] = 0xFE; memory[0x462] = 0xFC; memory[0x477] = 0x2B; memory[0x478] = 0x1F; memory[0x47B] = 0xFF; memory[0x47C] = 0xE0; memory[0x47D] = 0x7F; memory[0x47E] = 0x1F;
	memory[0x47F] = 0x80; memory[0x480] = 0x04; memory[0x481] = 0x1C; memory[0x482] = 0x3C; memory[0x483] = 0x04; memory[0x484] = 0x05; memory[0x485] = 0x1B; memory[0x486] = 0x05;
	memory[0x487] = 0x1B; memory[0x488] = 0x17; memory[0x489] = 0x04; memory[0x48A] = 0x17; memory[0x48B] = 0x07; memory[0x48C] = 0x08; memory[0x48D] = 0x17; memory[0x48E] = 0x08;
	memory[0x48F] = 0x1C; memory[0x490] = 0x08; memory[0x491] = 0x15; memory[0x492] = 0x1A; memory[0x493] = 0x06; memory[0x494] = 0x03; memory[0x496] = 0x14; memory[0x497] = 0x1B;
	memory[0x498] = 0x0A; memory[0x499] = 0x16; memory[0x49A] = 0x16; memory[0x49B] = 0x1A; memory[0x49C] = 0x0A; memory[0x49D] = 0x0E; memory[0x49E] = 0x1A; memory[0x49F] = 0x08;
	memory[0x4A0] = 0x02; memory[0x4A2] = 0x10; memory[0x4A3] = 0x1E; memory[0x4A4] = 0x0C; memory[0x4A5] = 0x15; memory[0x4A6] = 0x17; memory[0x4A7] = 0x18; memory[0x4A8] = 0x0B;
	memory[0x4A9] = 0x08; memory[0x4AA] = 0x19; memory[0x4AB] = 0x0B; memory[0x4AC] = 0x01; memory[0x4AE] = 0x0D; memory[0x4AF] = 0x20; memory[0x4B0] = 0x0F; memory[0x4B1] = 0x13;
	memory[0x4B2] = 0x19; memory[0x4B3] = 0x15; memory[0x4B4] = 0x0A; memory[0x4B5] = 0x03; memory[0x4B6] = 0x15; memory[0x4B7] = 0x20; memory[0x4B8] = 0x12; memory[0x4B9] = 0x0E;
	memory[0x4BA] = 0x01; memory[0x4BB] = 0x10; memory[0x4BC] = 0x1A; memory[0x4BD] = 0x01; memory[0x4BE] = 0x0B; memory[0x4BF] = 0x14; memory[0x4C0] = 0x08; memory[0x4C2] = 0x11;
	memory[0x4C3] = 0x1F; memory[0x4C4] = 0x14; memory[0x4C5] = 0x0D; memory[0x4C6] = 0x1B; memory[0x4C7] = 0x12; memory[0x4C8] = 0x01; memory[0x4C9] = 0x04; memory[0x4CA] = 0x09;
	memory[0x4CB] = 0x15; memory[0x4CC] = 0x06; memory[0x4CE] = 0x0D; memory[0x4CF] = 0x1D; memory[0x4D0] = 0x16; memory[0x4D1] = 0x0A; memory[0x4D2] = 0x1B; memory[0x4D3] = 0x15;
	memory[0x4D4] = 0x03; memory[0x4D5] = 0x06; memory[0x4D6] = 0x08; memory[0x4D7] = 0x18; memory[0x4D8] = 0x05; memory[0x4D9] = 0x01; memory[0x4DA] = 0x09; memory[0x4DB] = 0x1C;
	memory[0x4DC] = 0x16; memory[0x4DD] = 0x06; memory[0x4DE] = 0x19; memory[0x4DF] = 0x17; memory[0x4E0] = 0x05; memory[0x4E1] = 0x07; memory[0x4E2] = 0x08; memory[0x4E3] = 0x1B;
	memory[0x4E4] = 0x05; memory[0x4E5] = 0x04; memory[0x4E6] = 0x05; memory[0x4E7] = 0x1B; memory[0x4E8] = 0x17; memory[0x4E9] = 0x04; memory[0x4EA] = 0x17; memory[0x4EB] = 0x17;
	memory[0x4EC] = 0x08; memory[0x4ED] = 0x08; memory[0x4EE] = 0x08; memory[0x4EF] = 0x04; memory[0x4F0] = 0x14; memory[0x4F1] = 0x09; memory[0x4F2] = 0x02; memory[0x4F3] = 0x1A;
	memory[0x4F4] = 0x18; memory[0x4F5] = 0x1E; memory[0x4F6] = 0x07; memory[0x4F7] = 0x05; memory[0x4F8] = 0x13; memory[0x4F9] = 0x08; memory[0x4FA] = 0x07; memory[0x4FB] = 0x05;
	memory[0x4FC] = 0x12; memory[0x4FD] = 0x0E; memory[0x4FE] = 0x01; memory[0x4FF] = 0x19; memory[0x500] = 0x19; memory[0x501] = 0x1F; memory[0x502] = 0x0A; memory[0x503] = 0x02;
	memory[0x504] = 0x12; memory[0x505] = 0x08; memory[0x506] = 0x06; memory[0x507] = 0x08; memory[0x508] = 0x12; memory[0x509] = 0x14; memory[0x50A] = 0x02; memory[0x50B] = 0x18;
	memory[0x50C] = 0x1A; memory[0x50D] = 0x20; memory[0x50E] = 0x0C; memory[0x510] = 0x10; memory[0x511] = 0x09; memory[0x512] = 0x05; memory[0x513] = 0x0A; memory[0x514] = 0x12;
	memory[0x515] = 0x19; memory[0x516] = 0x04; memory[0x517] = 0x15; memory[0x518] = 0x1B; memory[0x51A] = 0x0E; memory[0x51B] = 0x1F; memory[0x51C] = 0x0E; memory[0x51D] = 0x0B;
	memory[0x51E] = 0x03; memory[0x51F] = 0x0C; memory[0x520] = 0x14; memory[0x521] = 0x1D; memory[0x522] = 0x08; memory[0x524] = 0x0B; memory[0x525] = 0x0E; memory[0x526] = 0x01;
	memory[0x527] = 0x11; memory[0x528] = 0x1B; memory[0x529] = 0x1D; memory[0x52A] = 0x11; memory[0x52B] = 0x0B; memory[0x52C] = 0x17; memory[0x52D] = 0x1F; memory[0x52E] = 0x0D;
	memory[0x530] = 0x08; memory[0x531] = 0x12; memory[0x532] = 0x01; memory[0x533] = 0x0D; memory[0x534] = 0x1A; memory[0x535] = 0x1B; memory[0x536] = 0x12; memory[0x537] = 0x08;
	memory[0x538] = 0x18; memory[0x539] = 0x1E; memory[0x53A] = 0x12; memory[0x53B] = 0x02; memory[0x53C] = 0x07; memory[0x53D] = 0x17; memory[0x53E] = 0x02; memory[0x53F] = 0x0A;
	memory[0x540] = 0x17; memory[0x541] = 0x19; memory[0x542] = 0x13; memory[0x543] = 0x1B; memory[0x544] = 0x17; memory[0x545] = 0x1B; memory[0x546] = 0x05; memory[0x547] = 0x04;
	memory[0x548] = 0x17; memory[0x549] = 0x04; memory[0x54A] = 0x05; memory[0x54B] = 0x17; memory[0x54C] = 0x08; memory[0x54D] = 0x17; memory[0x54E] = 0x14; memory[0x54F] = 0x1D;
	memory[0x550] = 0x0A; memory[0x551] = 0x06; memory[0x552] = 0x04; memory[0x553] = 0x15; memory[0x554] = 0x1A; memory[0x555] = 0x01; memory[0x556] = 0x15; memory[0x557] = 0x1B;
	memory[0x558] = 0x09; memory[0x559] = 0x0B; memory[0x55A] = 0x05; memory[0x55B] = 0x1B; memory[0x55C] = 0x0E; memory[0x55D] = 0x08; memory[0x55E] = 0x03; memory[0x55F] = 0x0E;
	memory[0x560] = 0x1B; memory[0x562] = 0x11; memory[0x563] = 0x1E; memory[0x564] = 0x0C; memory[0x565] = 0x10; memory[0x566] = 0x04; memory[0x567] = 0x17; memory[0x568] = 0x12;
	memory[0x569] = 0x0A; memory[0x56A] = 0x02; memory[0x56B] = 0x08; memory[0x56C] = 0x1A; memory[0x56D] = 0x1F; memory[0x56E] = 0x0F; memory[0x570] = 0x0D; memory[0x571] = 0x16;
	memory[0x572] = 0x04; memory[0x573] = 0x10; memory[0x574] = 0x14; memory[0x575] = 0x0D; memory[0x576] = 0x02; memory[0x577] = 0x1E; memory[0x578] = 0x14; memory[0x579] = 0x03;
	memory[0x57A] = 0x16; memory[0x57B] = 0x1B; memory[0x57C] = 0x06; memory[0x57D] = 0x02; memory[0x57E] = 0x09; memory[0x57F] = 0x09; memory[0x580] = 0x13; memory[0x581] = 0x10;
	memory[0x582] = 0x01; memory[0x583] = 0x1A; memory[0x584] = 0x18; memory[0x585] = 0x1F; memory[0x586] = 0x0A; memory[0x587] = 0x01; memory[0x588] = 0x12; memory[0x589] = 0x07;
	memory[0x58A] = 0x06; memory[0x58B] = 0x04; memory[0x58C] = 0x0F; memory[0x58D] = 0x14; memory[0x58E] = 0x02; memory[0x58F] = 0x13; memory[0x590] = 0x1B; memory[0x591] = 0x20;
	memory[0x592] = 0x0E; memory[0x593] = 0x01; memory[0x594] = 0x0E; memory[0x595] = 0x0D; memory[0x596] = 0x05; memory[0x597] = 0x02; memory[0x598] = 0x0A; memory[0x599] = 0x18;
	memory[0x59A] = 0x03; memory[0x59B] = 0x0B; memory[0x59C] = 0x1B; memory[0x59D] = 0x1F; memory[0x59E] = 0x13; memory[0x59F] = 0x04; memory[0x5A0] = 0x0A; memory[0x5A1] = 0x12;
	memory[0x5A2] = 0x05; memory[0x5A3] = 0x04; memory[0x5A4] = 0x17; memory[0x5A5] = 0x04; memory[0x5A6] = 0x05; memory[0x5A7] = 0x1B; memory[0x5A8] = 0x17; memory[0x5A9] = 0x1B;
	memory[0x5AA] = 0x05; memory[0x5AB] = 0x08; memory[0x5AC] = 0x14; memory[0x5AD] = 0x08; memory[0x5AE] = 0x08; memory[0x5AF] = 0x15; memory[0x5B0] = 0x19; memory[0x5B1] = 0x1E;
	memory[0x5B2] = 0x08; memory[0x5B4] = 0x11; memory[0x5B5] = 0x09; memory[0x5B6] = 0x02; memory[0x5B7] = 0x14; memory[0x5B8] = 0x17; memory[0x5B9] = 0x1B; memory[0x5BA] = 0x0C;
	memory[0x5BB] = 0x0E; memory[0x5BC] = 0x17; memory[0x5BD] = 0x1F; memory[0x5BE] = 0x0B; memory[0x5C0] = 0x0B; memory[0x5C1] = 0x0F; memory[0x5C2] = 0x01; memory[0x5C3] = 0x10;
	memory[0x5C4] = 0x1A; memory[0x5C5] = 0x1C; memory[0x5C6] = 0x10; memory[0x5C7] = 0x09; memory[0x5C8] = 0x13; memory[0x5C9] = 0x1F; memory[0x5CA] = 0x0E; memory[0x5CB] = 0x02;
	memory[0x5CC] = 0x06; memory[0x5CD] = 0x15; memory[0x5CE] = 0x02; memory[0x5CF] = 0x0A; memory[0x5D0] = 0x1A; memory[0x5D1] = 0x1A; memory[0x5D2] = 0x15; memory[0x5D3] = 0x08;
	memory[0x5D4] = 0x0E; memory[0x5D5] = 0x1F; memory[0x5D6] = 0x0F; memory[0x5D7] = 0x08; memory[0x5D8] = 0x02; memory[0x5D9] = 0x05; memory[0x5DA] = 0x18; memory[0x5DB] = 0x1A;
	memory[0x5DC] = 0x05; memory[0x5DD] = 0x17; memory[0x5DE] = 0x19; memory[0x5DF] = 0x0A; memory[0x5E0] = 0x09; memory[0x5E1] = 0x1E; memory[0x5E2] = 0x12; memory[0x5E4] = 0x14;
	memory[0x5E5] = 0x0E; memory[0x5E6] = 0x01; memory[0x5E7] = 0x11; memory[0x5E8] = 0x1B; memory[0x5E9] = 0x1C; memory[0x5EA] = 0x09; memory[0x5EB] = 0x0F; memory[0x5EC] = 0x05;
	memory[0x5ED] = 0x1D; memory[0x5EE] = 0x14; memory[0x5F0] = 0x0E; memory[0x5F1] = 0x0C; memory[0x5F2] = 0x1B; memory[0x5F3] = 0x13; memory[0x5F4] = 0x02; memory[0x5F5] = 0x1D;
	memory[0x5F6] = 0x0E; memory[0x5F7] = 0x15; memory[0x5F8] = 0x04; memory[0x5F9] = 0x1C; memory[0x5FA] = 0x15; memory[0x5FC] = 0x0A; memory[0x5FD] = 0x07; memory[0x5FE] = 0x1A;
	memory[0x5FF] = 0x16; memory[0x600] = 0x05; memory[0x601] = 0x1B; memory[0x602] = 0x11; memory[0x603] = 0x1B; memory[0x604] = 0x05; memory[0x605] = 0x04; memory[0x606] = 0x05;
	memory[0x607] = 0x04; memory[0x608] = 0x17; memory[0x609] = 0x1B; memory[0x60A] = 0x17; memory[0x60B] = 0x18; memory[0x60C] = 0x08; memory[0x60D] = 0x08; memory[0x60E] = 0x08;
	memory[0x60F] = 0x03; memory[0x610] = 0x14; memory[0x611] = 0x0A; memory[0x612] = 0x02; memory[0x613] = 0x19; memory[0x614] = 0x19; memory[0x615] = 0x1F; memory[0x616] = 0x08;
	memory[0x617] = 0x04; memory[0x618] = 0x12; memory[0x619] = 0x09; memory[0x61A] = 0x06; memory[0x61B] = 0x05; memory[0x61C] = 0x12; memory[0x61D] = 0x11; memory[0x61E] = 0x02;
	memory[0x61F] = 0x17; memory[0x620] = 0x1A; memory[0x621] = 0x20; memory[0x622] = 0x0C; memory[0x623] = 0x01; memory[0x624] = 0x10; memory[0x625] = 0x0A; memory[0x626] = 0x05;
	memory[0x627] = 0x07; memory[0x628] = 0x11; memory[0x629] = 0x17; memory[0x62A] = 0x03; memory[0x62B] = 0x14; memory[0x62C] = 0x1B; memory[0x62E] = 0x0D; memory[0x62F] = 0x20;
	memory[0x630] = 0x0F; memory[0x631] = 0x0C; memory[0x632] = 0x03; memory[0x633] = 0x0A; memory[0x634] = 0x12; memory[0x635] = 0x1C; memory[0x636] = 0x07; memory[0x638] = 0x0A;
	memory[0x639] = 0x11; memory[0x63A] = 0x1B; memory[0x63B] = 0x0F; memory[0x63C] = 0x02; memory[0x63D] = 0x1E; memory[0x63E] = 0x11; memory[0x63F] = 0x0B; memory[0x640] = 0x14;
	memory[0x641] = 0x1F; memory[0x642] = 0x0B; memory[0x644] = 0x08; memory[0x645] = 0x12; memory[0x646] = 0x01; memory[0x647] = 0x0D; memory[0x648] = 0x1B; memory[0x649] = 0x1B;
	memory[0x64A] = 0x13; memory[0x64B] = 0x0A; memory[0x64C] = 0x16; memory[0x64D] = 0x1F; memory[0x64E] = 0x0F; memory[0x64F] = 0x02; memory[0x650] = 0x06; memory[0x651] = 0x15;
	memory[0x652] = 0x01; memory[0x653] = 0x0A; memory[0x654] = 0x19; memory[0x655] = 0x19; memory[0x656] = 0x14; memory[0x657] = 0x07; memory[0x658] = 0x17; memory[0x659] = 0x1E;
	memory[0x65A] = 0x13; memory[0x65B] = 0x03; memory[0x65C] = 0x06; memory[0x65D] = 0x19; memory[0x65E] = 0x03; memory[0x65F] = 0x08; memory[0x660] = 0x17; memory[0x661] = 0x18;
	memory[0x662] = 0x14; memory[0x663] = 0x1B; memory[0x664] = 0x05; memory[0x665] = 0x04; memory[0x666] = 0x05; memory[0x667] = 0x1B; memory[0x668] = 0x17; memory[0x669] = 0x04;
	memory[0x66A] = 0x17; memory[0x66B] = 0x17; memory[0x66C] = 0x08; memory[0x66D] = 0x08; memory[0x66E] = 0x08; memory[0x66F] = 0x1B; memory[0x670] = 0x08; memory[0x671] = 0x16;
	memory[0x672] = 0x1A; memory[0x673] = 0x05; memory[0x674] = 0x04; memory[0x675] = 0x01; memory[0x676] = 0x15; memory[0x677] = 0x1A; memory[0x678] = 0x09; memory[0x679] = 0x17;
	memory[0x67A] = 0x15; memory[0x67B] = 0x1A; memory[0x67C] = 0x0A; memory[0x67D] = 0x11; memory[0x67E] = 0x1B; memory[0x67F] = 0x06; memory[0x680] = 0x03; memory[0x682] = 0x12;
	memory[0x683] = 0x1D; memory[0x684] = 0x0A; memory[0x685] = 0x17; memory[0x686] = 0x16; memory[0x687] = 0x17; memory[0x688] = 0x0A; memory[0x689] = 0x0B; memory[0x68A] = 0x1A;
	memory[0x68B] = 0x07; memory[0x68C] = 0x02; memory[0x68E] = 0x10; memory[0x68F] = 0x1F; memory[0x690] = 0x0C; memory[0x691] = 0x16; memory[0x692] = 0x17; memory[0x693] = 0x15;
	memory[0x694] = 0x0A; memory[0x695] = 0x06; memory[0x696] = 0x18; memory[0x697] = 0x0A; memory[0x698] = 0x01; memory[0x699] = 0x20; memory[0x69A] = 0x0E; memory[0x69C] = 0x0E;
	memory[0x69D] = 0x14; memory[0x69E] = 0x19; memory[0x69F] = 0x13; memory[0x6A0] = 0x08; memory[0x6A1] = 0x02; memory[0x6A2] = 0x14; memory[0x6A3] = 0x20; memory[0x6A4] = 0x11;
	memory[0x6A5] = 0x0E; memory[0x6A6] = 0x01; memory[0x6A7] = 0x11; memory[0x6A8] = 0x1B; memory[0x6A9] = 0x02; memory[0x6AA] = 0x0B; memory[0x6AB] = 0x14; memory[0x6AC] = 0x05;
	memory[0x6AE] = 0x0F; memory[0x6AF] = 0x1F; memory[0x6B0] = 0x14; memory[0x6B1] = 0x0D; memory[0x6B2] = 0x1B; memory[0x6B3] = 0x12; memory[0x6B4] = 0x02; memory[0x6B5] = 0x04;
	memory[0x6B6] = 0x0A; memory[0x6B7] = 0x17; memory[0x6B8] = 0x04; memory[0x6B9] = 0x01; memory[0x6BA] = 0x0A; memory[0x6BB] = 0x1D; memory[0x6BC] = 0x15; memory[0x6BD] = 0x08;
	memory[0x6BE] = 0x1A; memory[0x6BF] = 0x15; memory[0x6C0] = 0x05; memory[0x6C1] = 0x06; memory[0x6C2] = 0x09; memory[0x6C3] = 0x1B; memory[0x6C4] = 0x17; memory[0x6C5] = 0x1B;
	memory[0x6C6] = 0x05; memory[0x6C7] = 0x04; memory[0x6C8] = 0x17; memory[0x6C9] = 0x04; memory[0x6CA] = 0x05; memory[0x6CB] = 0x18; memory[0x6CC] = 0x08; memory[0x6CD] = 0x18;
	memory[0x6CE] = 0x14; memory[0x6CF] = 0x02; memory[0x6D0] = 0x12; memory[0x6D1] = 0x19; memory[0x6D2] = 0x18; memory[0x6D3] = 0x0A; memory[0x6D4] = 0x02; memory[0x6D5] = 0x1E;
	memory[0x6D6] = 0x07; memory[0x6D7] = 0x04; memory[0x6D8] = 0x13; memory[0x6D9] = 0x14; memory[0x6DA] = 0x17; memory[0x6DB] = 0x04; memory[0x6DC] = 0x0E; memory[0x6DD] = 0x17;
	memory[0x6DE] = 0x19; memory[0x6DF] = 0x11; memory[0x6E0] = 0x01; memory[0x6E1] = 0x20; memory[0x6E2] = 0x0B; memory[0x6E3] = 0x01; memory[0x6E4] = 0x10; memory[0x6E5] = 0x0F;
	memory[0x6E6] = 0x18; memory[0x6E7] = 0x08; memory[0x6E8] = 0x0A; memory[0x6E9] = 0x15; memory[0x6EA] = 0x1A; memory[0x6EB] = 0x17; memory[0x6EC] = 0x02; memory[0x6ED] = 0x20;
	memory[0x6EE] = 0x0F; memory[0x6F0] = 0x0D; memory[0x6F1] = 0x09; memory[0x6F2] = 0x18; memory[0x6F3] = 0x0F; memory[0x6F4] = 0x08; memory[0x6F5] = 0x12; memory[0x6F6] = 0x1A;
	memory[0x6F7] = 0x01; memory[0x6F8] = 0x08; memory[0x6F9] = 0x1C; memory[0x6FA] = 0x06; memory[0x6FB] = 0x04; memory[0x6FC] = 0x16; memory[0x6FD] = 0x1D; memory[0x6FE] = 0x13;
	memory[0x6FF] = 0x16; memory[0x700] = 0x09; memory[0x701] = 0x0F; memory[0x702] = 0x1B; memory[0x703] = 0x05; memory[0x704] = 0x04; memory[0x706] = 0x12; memory[0x707] = 0x1E;
	memory[0x708] = 0x0A; memory[0x709] = 0x18; memory[0x70A] = 0x16; memory[0x70B] = 0x1B; memory[0x70C] = 0x0D; memory[0x70D] = 0x0B; memory[0x70E] = 0x1A; memory[0x70F] = 0x0C;
	memory[0x710] = 0x01; memory[0x712] = 0x0E; memory[0x713] = 0x1E; memory[0x714] = 0x0E; memory[0x715] = 0x12; memory[0x716] = 0x17; memory[0x717] = 0x1D; memory[0x718] = 0x12;
	memory[0x719] = 0x07; memory[0x71A] = 0x19; memory[0x71B] = 0x14; memory[0x71C] = 0x01; memory[0x71E] = 0x09; memory[0x71F] = 0x1B; memory[0x720] = 0x12; memory[0x721] = 0x0D;
	memory[0x722] = 0x17; memory[0x723] = 0x04; memory[0x724] = 0x17; memory[0x725] = 0x04; memory[0x726] = 0x05; memory[0x727] = 0x1B; memory[0x728] = 0x17; memory[0x729] = 0x1B;
	memory[0x72A] = 0x05; memory[0x72B] = 0x08; memory[0x72C] = 0x14; memory[0x72D] = 0x08; memory[0x72E] = 0x08; memory[0x72F] = 0x0A; memory[0x730] = 0x03; memory[0x731] = 0x01;
	memory[0x732] = 0x14; memory[0x733] = 0x1F; memory[0x734] = 0x0B; memory[0x735] = 0x16; memory[0x736] = 0x1A; memory[0x737] = 0x0B; memory[0x738] = 0x05; memory[0x739] = 0x04;
	memory[0x73A] = 0x10; memory[0x73B] = 0x11; memory[0x73C] = 0x05; memory[0x73E] = 0x11; memory[0x73F] = 0x20; memory[0x740] = 0x11; memory[0x741] = 0x10; memory[0x742] = 0x1B;
	memory[0x743] = 0x0F; memory[0x744] = 0x02; memory[0x745] = 0x03; memory[0x746] = 0x0C; memory[0x747] = 0x16; memory[0x748] = 0x09; memory[0x74A] = 0x0E; memory[0x74B] = 0x1D;
	memory[0x74C] = 0x16; memory[0x74D] = 0x0A; memory[0x74E] = 0x1A; memory[0x74F] = 0x15; memory[0x750] = 0x02; memory[0x751] = 0x05; memory[0x752] = 0x07; memory[0x753] = 0x17;
	memory[0x754] = 0x0E; memory[0x756] = 0x0D; memory[0x757] = 0x17; memory[0x758] = 0x1A; memory[0x759] = 0x1A; memory[0x75A] = 0x04; memory[0x75B] = 0x05; memory[0x75C] = 0x17;
	memory[0x75D] = 0x08; memory[0x75E] = 0x03; memory[0x75F] = 0x15; memory[0x760] = 0x13; memory[0x761] = 0x01; memory[0x762] = 0x0A; memory[0x763] = 0x1F; memory[0x764] = 0x08;
	memory[0x765] = 0x0E; memory[0x766] = 0x01; memory[0x767] = 0x11; memory[0x768] = 0x1B; memory[0x769] = 0x03; memory[0x76A] = 0x13; memory[0x76B] = 0x10; memory[0x76C] = 0x17;
	memory[0x76D] = 0x02; memory[0x76E] = 0x08; memory[0x76F] = 0x20; memory[0x770] = 0x0E; memory[0x771] = 0x13; memory[0x772] = 0x01; memory[0x773] = 0x0C; memory[0x774] = 0x1A;
	memory[0x775] = 0x02; memory[0x776] = 0x0E; memory[0x777] = 0x0A; memory[0x778] = 0x18; memory[0x779] = 0x03; memory[0x77A] = 0x07; memory[0x77B] = 0x1F; memory[0x77C] = 0x12;
	memory[0x77D] = 0x18; memory[0x77E] = 0x02; memory[0x77F] = 0x09; memory[0x780] = 0x17; memory[0x781] = 0x04; memory[0x782] = 0x0B; memory[0x783] = 0x04; memory[0x784] = 0x05;
	memory[0x785] = 0x1B; memory[0x786] = 0x05; memory[0x787] = 0x1B; memory[0x788] = 0x17; memory[0x789] = 0x04; memory[0x78A] = 0x17; memory[0x78B] = 0x1C; memory[0x78C] = 0x08;
	memory[0x78D] = 0x15; memory[0x78E] = 0x1A; memory[0x78F] = 0x06; memory[0x790] = 0x03; memory[0x792] = 0x14; memory[0x793] = 0x1A; memory[0x794] = 0x0A; memory[0x795] = 0x0E;
	memory[0x796] = 0x1A; memory[0x797] = 0x08; memory[0x798] = 0x02; memory[0x79A] = 0x10; memory[0x79B] = 0x18; memory[0x79C] = 0x0B; memory[0x79D] = 0x08; memory[0x79E] = 0x19;
	memory[0x79F] = 0x0B; memory[0x7A0] = 0x01; memory[0x7A2] = 0x0D; memory[0x7A3] = 0x15; memory[0x7A4] = 0x0A; memory[0x7A5] = 0x03; memory[0x7A6] = 0x15; memory[0x7A7] = 0x0E;
	memory[0x7A8] = 0x01; memory[0x7A9] = 0x01; memory[0x7AA] = 0x0B; memory[0x7AB] = 0x14; memory[0x7AC] = 0x08; memory[0x7AE] = 0x11; memory[0x7AF] = 0x12; memory[0x7B0] = 0x01;
	memory[0x7B1] = 0x14; memory[0x7B2] = 0x12; memory[0x7B3] = 0x15; memory[0x7B4] = 0x06; memory[0x7B6] = 0x0D; memory[0x7B7] = 0x13; memory[0x7B8] = 0x14; memory[0x7B9] = 0x15;
	memory[0x7BA] = 0x03; memory[0x7BB] = 0x18; memory[0x7BC] = 0x05; memory[0x7BD] = 0x01; memory[0x7BE] = 0x09; memory[0x7BF] = 0x11; memory[0x7C0] = 0x15; memory[0x7C1] = 0x17;
	memory[0x7C2] = 0x05; memory[0x7C3] = 0x1B; memory[0x7C4] = 0x05; memory[0x7C5] = 0x04; memory[0x7C6] = 0x05; memory[0x7C7] = 0x10; memory[0x7C8] = 0x15; memory[0x7C9] = 0x17;
	memory[0x7CA] = 0x08; memory[0x7CB] = 0x09; memory[0x7CC] = 0x02; memory[0x7CD] = 0x1E; memory[0x7CE] = 0x07; memory[0x7CF] = 0x0E; memory[0x7D0] = 0x15; memory[0x7D1] = 0x08;
	memory[0x7D2] = 0x07; memory[0x7D3] = 0x0E; memory[0x7D4] = 0x01; memory[0x7D5] = 0x1F; memory[0x7D6] = 0x0A; memory[0x7D7] = 0x0C; memory[0x7D8] = 0x15; memory[0x7D9] = 0x08;
	memory[0x7DA] = 0x06; memory[0x7DB] = 0x14; memory[0x7DC] = 0x02; memory[0x7DD] = 0x0B; memory[0x7DE] = 0x14; memory[0x7DF] = 0x20; memory[0x7E0] = 0x0C; memory[0x7E1] = 0x09;
	memory[0x7E2] = 0x05; memory[0x7E3] = 0x19; memory[0x7E4] = 0x04; memory[0x7E5] = 0x0A; memory[0x7E6] = 0x14; memory[0x7E7] = 0x1F; memory[0x7E8] = 0x0E; memory[0x7E9] = 0x0B;
	memory[0x7EA] = 0x03; memory[0x7EB] = 0x1D; memory[0x7EC] = 0x08; memory[0x7ED] = 0x08; memory[0x7EE] = 0x13; memory[0x7EF] = 0x0E; memory[0x7F0] = 0x01; memory[0x7F1] = 0x1D;
	memory[0x7F2] = 0x11; memory[0x7F3] = 0x1F; memory[0x7F4] = 0x0D; memory[0x7F5] = 0x12; memory[0x7F6] = 0x01; memory[0x7F7] = 0x07; memory[0x7F8] = 0x11; memory[0x7F9] = 0x1B;
	memory[0x7FA] = 0x12; memory[0x7FB] = 0x1E; memory[0x7FC] = 0x12; memory[0x7FD] = 0x17; memory[0x7FE] = 0x02; memory[0x7FF] = 0x06; memory[0x800] = 0x10; memory[0x801] = 0x19;
	memory[0x802] = 0x13; memory[0x803] = 0x1B; memory[0x804] = 0x17; memory[0x805] = 0x1B; memory[0x806] = 0x05; memory[0x807] = 0x06; memory[0x808] = 0x0E; memory[0x809] = 0x17;
	memory[0x80A] = 0x08; memory[0x80B] = 0x1D; memory[0x80C] = 0x0A; memory[0x80D] = 0x15; memory[0x80E] = 0x1A; memory[0x80F] = 0x07; memory[0x810] = 0x0C; memory[0x811] = 0x1B;
	memory[0x812] = 0x09; memory[0x813] = 0x1B; memory[0x814] = 0x0E; memory[0x815] = 0x0E; memory[0x816] = 0x1B; memory[0x817] = 0x08; memory[0x818] = 0x0A; memory[0x819] = 0x1E;
	memory[0x81A] = 0x0C; memory[0x81B] = 0x17; memory[0x81C] = 0x12; memory[0x81D] = 0x08; memory[0x81E] = 0x1A; memory[0x81F] = 0x1F; memory[0x820] = 0x0F; memory[0x821] = 0x0B;
	memory[0x822] = 0x08; memory[0x823] = 0x10; memory[0x824] = 0x14; memory[0x825] = 0x1E; memory[0x826] = 0x14; memory[0x827] = 0x03; memory[0x828] = 0x16; memory[0x829] = 0x0F;
	memory[0x82A] = 0x07; memory[0x82B] = 0x09; memory[0x82C] = 0x13; memory[0x82D] = 0x1A; memory[0x82E] = 0x18; memory[0x82F] = 0x01; memory[0x830] = 0x12; memory[0x831] = 0x12;
	memory[0x832] = 0x08; memory[0x833] = 0x04; memory[0x834] = 0x0F; memory[0x835] = 0x13; memory[0x836] = 0x1B; memory[0x837] = 0x15; memory[0x838] = 0x09; memory[0x839] = 0x01;
	memory[0x83A] = 0x0E; memory[0x83B] = 0x02; memory[0x83C] = 0x0A; memory[0x83D] = 0x0B; memory[0x83E] = 0x1B; memory[0x83F] = 0x18; memory[0x840] = 0x0B; memory[0x841] = 0x04;
	memory[0x842] = 0x0A; memory[0x843] = 0x04; memory[0x844] = 0x17; memory[0x845] = 0x04; memory[0x846] = 0x05; memory[0x847] = 0x19; memory[0x848] = 0x0E; memory[0x849] = 0x08;
	memory[0x84A] = 0x14; memory[0x84C] = 0x11; memory[0x84D] = 0x09; memory[0x84E] = 0x02; memory[0x84F] = 0x18; memory[0x850] = 0x10; memory[0x851] = 0x06; memory[0x852] = 0x12;
	memory[0x854] = 0x0B; memory[0x855] = 0x0F; memory[0x856] = 0x01; memory[0x857] = 0x16; memory[0x858] = 0x13; memory[0x859] = 0x05; memory[0x85A] = 0x10; memory[0x85B] = 0x02;
	memory[0x85C] = 0x06; memory[0x85D] = 0x14; memory[0x85E] = 0x14; memory[0x85F] = 0x15; memory[0x860] = 0x02; memory[0x861] = 0x05; memory[0x862] = 0x0E; memory[0x863] = 0x11;
	memory[0x864] = 0x14; memory[0x865] = 0x08; memory[0x866] = 0x02; memory[0x867] = 0x1A; memory[0x868] = 0x05; memory[0x869] = 0x05; memory[0x86A] = 0x0D; memory[0x86B] = 0x0E;
	memory[0x86C] = 0x13; memory[0x86D] = 0x0E; memory[0x86E] = 0x01; memory[0x86F] = 0x1C; memory[0x870] = 0x09; memory[0x871] = 0x06; memory[0x872] = 0x0C; memory[0x873] = 0x0D;
	memory[0x874] = 0x11; memory[0x875] = 0x13; memory[0x876] = 0x02; memory[0x877] = 0x1D; memory[0x878] = 0x0E; memory[0x879] = 0x06; memory[0x87A] = 0x0A; memory[0x87B] = 0x0E;
	memory[0x87C] = 0x0F; memory[0x87D] = 0x16; memory[0x87E] = 0x05; memory[0x87F] = 0x1B; memory[0x880] = 0x11; memory[0x881] = 0x07; memory[0x882] = 0x09; memory[0x883] = 0x10;
	memory[0x884] = 0x0E; memory[0x885] = 0x18; memory[0x886] = 0x08; memory[0x887] = 0x08; memory[0x888] = 0x08; memory[0x889] = 0x08; memory[0x88A] = 0x14; memory[0x88B] = 0x12;
	memory[0x88C] = 0x0E; memory[0x88D] = 0x04; memory[0x88E] = 0x12; memory[0x88F] = 0x09; memory[0x890] = 0x06; memory[0x891] = 0x13; memory[0x892] = 0x16; memory[0x893] = 0x14;
	memory[0x894] = 0x0E; memory[0x895] = 0x01; memory[0x896] = 0x10; memory[0x897] = 0x0A; memory[0x898] = 0x05; memory[0x899] = 0x0F; memory[0x89A] = 0x16; memory[0x89B] = 0x16;
	memory[0x89C] = 0x10; memory[0x89E] = 0x0D; memory[0x89F] = 0x0C; memory[0x8A0] = 0x03; memory[0x8A1] = 0x0A; memory[0x8A2] = 0x15; memory[0x8A3] = 0x16; memory[0x8A4] = 0x12;
	memory[0x8A6] = 0x0A; memory[0x8A7] = 0x0F; memory[0x8A8] = 0x02; memory[0x8A9] = 0x07; memory[0x8AA] = 0x13; memory[0x8AC] = 0x08; memory[0x8AD] = 0x15; memory[0x8AE] = 0x13;
	memory[0x8AF] = 0x12; memory[0x8B0] = 0x01; memory[0x8B1] = 0x05; memory[0x8B2] = 0x10; memory[0x8B3] = 0x02; memory[0x8B4] = 0x06; memory[0x8B5] = 0x15; memory[0x8B6] = 0x01;
	memory[0x8B7] = 0x13; memory[0x8B8] = 0x15; memory[0x8B9] = 0x05; memory[0x8BA] = 0x0E; memory[0x8BB] = 0x03; memory[0x8BC] = 0x06; memory[0x8BD] = 0x19; memory[0x8BE] = 0x03;
	memory[0x8BF] = 0x11; memory[0x8C0] = 0x15; memory[0x8C1] = 0x05; memory[0x8C2] = 0x0B; memory[0x8C3] = 0x1B; memory[0x8C4] = 0x05; memory[0x8C5] = 0x04; memory[0x8C6] = 0x05;
	memory[0x8C7] = 0x0F; memory[0x8C8] = 0x15; memory[0x8C9] = 0x17; memory[0x8CA] = 0x08; memory[0x8CB] = 0x1B; memory[0x8CC] = 0x08; memory[0x8CD] = 0x05; memory[0x8CE] = 0x04;
	memory[0x8CF] = 0x0E; memory[0x8D0] = 0x15; memory[0x8D1] = 0x1A; memory[0x8D2] = 0x09; memory[0x8D3] = 0x1A; memory[0x8D4] = 0x0A; memory[0x8D5] = 0x06; memory[0x8D6] = 0x03;
	memory[0x8D7] = 0x0C; memory[0x8D8] = 0x14; memory[0x8D9] = 0x1D; memory[0x8DA] = 0x0A; memory[0x8DB] = 0x17; memory[0x8DC] = 0x0A; memory[0x8DD] = 0x07; memory[0x8DE] = 0x02;
	memory[0x8DF] = 0x1F; memory[0x8E0] = 0x0C; memory[0x8E1] = 0x0B; memory[0x8E2] = 0x14; memory[0x8E3] = 0x15; memory[0x8E4] = 0x0A; memory[0x8E5] = 0x0A; memory[0x8E6] = 0x01;
	memory[0x8E7] = 0x20; memory[0x8E8] = 0x0E; memory[0x8E9] = 0x0A; memory[0x8EA] = 0x13; memory[0x8EB] = 0x13; memory[0x8EC] = 0x08; memory[0x8ED] = 0x20; memory[0x8EE] = 0x11;
	memory[0x8EF] = 0x0E; memory[0x8F0] = 0x01; memory[0x8F1] = 0x09; memory[0x8F2] = 0x12; memory[0x8F3] = 0x14; memory[0x8F4] = 0x05; memory[0x8F5] = 0x1F; memory[0x8F6] = 0x14;
	memory[0x8F7] = 0x08; memory[0x8F8] = 0x11; memory[0x8F9] = 0x12; memory[0x8FA] = 0x02; memory[0x8FB] = 0x17; memory[0x8FC] = 0x04; memory[0x8FD] = 0x1D; memory[0x8FE] = 0x15;
	memory[0x8FF] = 0x07; memory[0x900] = 0x10; memory[0x901] = 0x15; memory[0x902] = 0x05; memory[0x903] = 0x1B; memory[0x904] = 0x17; memory[0x905] = 0x1B; memory[0x906] = 0x05;
	memory[0x907] = 0x06; memory[0x908] = 0x0E; memory[0x909] = 0x18; memory[0x90A] = 0x08; memory[0x90B] = 0x19; memory[0x90C] = 0x18; memory[0x90D] = 0x1E; memory[0x90E] = 0x07;
	memory[0x90F] = 0x07; memory[0x910] = 0x0C; memory[0x911] = 0x14; memory[0x912] = 0x17; memory[0x913] = 0x17; memory[0x914] = 0x19; memory[0x915] = 0x20; memory[0x916] = 0x0B;
	memory[0x917] = 0x08; memory[0x918] = 0x0A; memory[0x919] = 0x0F; memory[0x91A] = 0x18; memory[0x91B] = 0x15; memory[0x91C] = 0x1A; memory[0x91D] = 0x0B; memory[0x91E] = 0x08;
	memory[0x91F] = 0x20; memory[0x920] = 0x0F; memory[0x921] = 0x09; memory[0x922] = 0x18; memory[0x923] = 0x12; memory[0x924] = 0x1A; memory[0x925] = 0x0E; memory[0x926] = 0x07;
	memory[0x927] = 0x04; memory[0x928] = 0x16; memory[0x929] = 0x1D; memory[0x92A] = 0x13; memory[0x92B] = 0x0F; memory[0x92C] = 0x1B; memory[0x92D] = 0x12; memory[0x92E] = 0x07;
	memory[0x930] = 0x12; memory[0x931] = 0x18; memory[0x932] = 0x16; memory[0x933] = 0x0B; memory[0x934] = 0x1A; memory[0x936] = 0x0E; memory[0x937] = 0x16; memory[0x938] = 0x09;
	memory[0x939] = 0x12; memory[0x93A] = 0x17; memory[0x93B] = 0x07; memory[0x93C] = 0x19; memory[0x93E] = 0x09; memory[0x93F] = 0x18; memory[0x940] = 0x0B; memory[0x941] = 0x0D;
	memory[0x942] = 0x17; memory[0x943] = 0x04; memory[0x944] = 0x17; memory[0x945] = 0x04; memory[0x946] = 0x05; memory[0x947] = 0x19; memory[0x948] = 0x0E; memory[0x949] = 0x08;
	memory[0x94A] = 0x14; memory[0x94B] = 0x0A; memory[0x94C] = 0x03; memory[0x94D] = 0x01; memory[0x94E] = 0x14; memory[0x94F] = 0x18; memory[0x950] = 0x10; memory[0x951] = 0x0B;
	memory[0x952] = 0x05; memory[0x953] = 0x11; memory[0x954] = 0x05; memory[0x956] = 0x11; memory[0x957] = 0x16; memory[0x958] = 0x12; memory[0x959] = 0x0F; memory[0x95A] = 0x02;
	memory[0x95B] = 0x16; memory[0x95C] = 0x09; memory[0x95E] = 0x0E; memory[0x95F] = 0x15; memory[0x960] = 0x02; memory[0x961] = 0x13; memory[0x962] = 0x13; memory[0x963] = 0x17;
	memory[0x964] = 0x0E; memory[0x966] = 0x0D; memory[0x967] = 0x1A; memory[0x968] = 0x04; memory[0x969] = 0x08; memory[0x96A] = 0x03; memory[0x96B] = 0x15; memory[0x96C] = 0x13;
	memory[0x96D] = 0x01; memory[0x96E] = 0x0A; memory[0x96F] = 0x1F; memory[0x970] = 0x08; memory[0x971] = 0x0E; memory[0x972] = 0x01; memory[0x973] = 0x10; memory[0x974] = 0x17;
	memory[0x975] = 0x02; memory[0x976] = 0x08; memory[0x977] = 0x20; memory[0x978] = 0x0E; memory[0x979] = 0x13; memory[0x97A] = 0x01; memory[0x97B] = 0x0A; memory[0x97C] = 0x18;
	memory[0x97D] = 0x03; memory[0x97E] = 0x07; memory[0x97F] = 0x1F; memory[0x980] = 0x12; memory[0x981] = 0x18; memory[0x982] = 0x02; memory[0x983] = 0x10; memory[0x984] = 0x0E;
	memory[0x985] = 0x06; memory[0x986] = 0x07; memory[0x987] = 0x19; memory[0x988] = 0x07; memory[0x989] = 0x19; memory[0x98A] = 0x15; memory[0x98B] = 0x0D; memory[0x98C] = 0x0E;
	memory[0x98D] = 0x1B; memory[0x98E] = 0x09; memory[0x98F] = 0x16; memory[0x990] = 0x17; memory[0x991] = 0x09; memory[0x992] = 0x05; memory[0x993] = 0x0B; memory[0x994] = 0x0E;
	memory[0x995] = 0x1C; memory[0x996] = 0x0C; memory[0x997] = 0x12; memory[0x998] = 0x18; memory[0x999] = 0x0D; memory[0x99A] = 0x04; memory[0x99B] = 0x1C; memory[0x99C] = 0x0E;
	memory[0x99D] = 0x09; memory[0x99E] = 0x0C; memory[0x99F] = 0x0E; memory[0x9A0] = 0x19; memory[0x9A1] = 0x11; memory[0x9A2] = 0x04; memory[0x9A3] = 0x1B; memory[0x9A4] = 0x0E;
	memory[0x9A5] = 0x09; memory[0x9A6] = 0x0A; memory[0x9A7] = 0x0B; memory[0x9A8] = 0x18; memory[0x9A9] = 0x14; memory[0x9AA] = 0x05; memory[0x9AB] = 0x1A; memory[0x9AC] = 0x0E;
	memory[0x9AD] = 0x07; memory[0x9AE] = 0x16; memory[0x9AF] = 0x0A; memory[0x9B0] = 0x09; memory[0x9B1] = 0x14; memory[0x9B2] = 0x12; memory[0x9B3] = 0x1A; memory[0x9B4] = 0x0E;
	memory[0x9B5] = 0x05; memory[0x9B6] = 0x14; memory[0x9B7] = 0x0C; memory[0x9B8] = 0x07; memory[0x9B9] = 0x13; memory[0x9BA] = 0x14; memory[0x9BB] = 0x1A; memory[0x9BC] = 0x0E;
	memory[0x9BD] = 0x04; memory[0x9BE] = 0x11; memory[0x9BF] = 0x0E; memory[0x9C0] = 0x07; memory[0x9C1] = 0x11; memory[0x9C2] = 0x15; memory[0x9C3] = 0x1B; memory[0x9C4] = 0x0E;
	memory[0x9C5] = 0x04; memory[0x9C6] = 0x0E; memory[0x9C7] = 0x10; memory[0x9C8] = 0x15; memory[0x9C9] = 0x10; memory[0x9CA] = 0x07; memory[0x9CB] = 0x06; memory[0x9CC] = 0x0C;
	memory[0x9CD] = 0x1C; memory[0x9CE] = 0x0F; memory[0x9CF] = 0x0E; memory[0x9D0] = 0x15; memory[0x9D1] = 0x11; memory[0x9D2] = 0x07; memory[0x9D3] = 0x0A; memory[0x9D4] = 0x0A;
	memory[0x9D5] = 0x1D; memory[0x9D6] = 0x10; memory[0x9D7] = 0x0C; memory[0x9D8] = 0x15; memory[0x9D9] = 0x13; memory[0x9DA] = 0x08; memory[0x9DB] = 0x0E; memory[0x9DC] = 0x0A;
	memory[0x9DD] = 0x1C; memory[0x9DE] = 0x12; memory[0x9DF] = 0x0B; memory[0x9E0] = 0x14; memory[0x9E1] = 0x14; memory[0x9E2] = 0x08; memory[0x9E3] = 0x12; memory[0x9E4] = 0x0B;
	memory[0x9E5] = 0x0A; memory[0x9E6] = 0x14; memory[0x9E7] = 0x1A; memory[0x9E8] = 0x14; memory[0x9E9] = 0x05; memory[0x9EA] = 0x08; memory[0x9EB] = 0x15; memory[0x9EC] = 0x0E;
	memory[0x9ED] = 0x07; memory[0x9EE] = 0x06; memory[0x9EF] = 0x08; memory[0x9F0] = 0x13; memory[0x9F1] = 0x17; memory[0x9F2] = 0x16; memory[0x9F3] = 0x15; memory[0x9F4] = 0x11;
	memory[0x9F5] = 0x0A; memory[0x9F6] = 0x04; memory[0x9F7] = 0x07; memory[0x9F8] = 0x11; memory[0x9F9] = 0x17; memory[0x9FA] = 0x0B; memory[0x9FB] = 0x13; memory[0x9FC] = 0x15;
	memory[0x9FD] = 0x0D; memory[0x9FE] = 0x04; memory[0x9FF] = 0x06; memory[0xA00] = 0x10; memory[0xA01] = 0x18; memory[0xA02] = 0x0C; memory[0xA03] = 0x10; memory[0xA04] = 0x17;
	memory[0xA05] = 0x10; memory[0xA06] = 0x05; memory[0xA07] = 0x06; memory[0xA08] = 0x0E; memory[0xA09] = 0x19; memory[0xA0A] = 0x0E; memory[0xA0B] = 0x11; memory[0xA0C] = 0x07;
	memory[0xA0D] = 0x0B; memory[0xA0E] = 0x17; memory[0xA0F] = 0x18; memory[0xA10] = 0x10; memory[0xA11] = 0x07; memory[0xA12] = 0x0C; memory[0xA13] = 0x11; memory[0xA14] = 0x09;
	memory[0xA15] = 0x06; memory[0xA16] = 0x16; memory[0xA17] = 0x17; memory[0xA18] = 0x12; memory[0xA19] = 0x08; memory[0xA1A] = 0x0A; memory[0xA1B] = 0x10; memory[0xA1C] = 0x0A;
	memory[0xA1D] = 0x03; memory[0xA1E] = 0x13; memory[0xA1F] = 0x14; memory[0xA20] = 0x14; memory[0xA21] = 0x1A; memory[0xA22] = 0x0A; memory[0xA23] = 0x0E; memory[0xA24] = 0x0B;
	memory[0xA25] = 0x11; memory[0xA26] = 0x15; memory[0xA27] = 0x1D; memory[0xA28] = 0x0D; memory[0xA29] = 0x03; memory[0xA2A] = 0x0F; memory[0xA2B] = 0x0D; memory[0xA2C] = 0x0A;
	memory[0xA2D] = 0x1D; memory[0xA2E] = 0x10; memory[0xA2F] = 0x0D; memory[0xA30] = 0x15; memory[0xA31] = 0x12; memory[0xA32] = 0x08; memory[0xA33] = 0x0C; memory[0xA34] = 0x08;
	memory[0xA35] = 0x1A; memory[0xA36] = 0x14; memory[0xA37] = 0x09; memory[0xA38] = 0x13; memory[0xA39] = 0x15; memory[0xA3A] = 0x09; memory[0xA3B] = 0x0D; memory[0xA3C] = 0x06;
	memory[0xA3D] = 0x15; memory[0xA3E] = 0x17; memory[0xA3F] = 0x07; memory[0xA40] = 0x11; memory[0xA41] = 0x18; memory[0xA42] = 0x0B; memory[0xA43] = 0x10; memory[0xA44] = 0x17;
	memory[0xA45] = 0x10; memory[0xA46] = 0x05; memory[0xA47] = 0x19; memory[0xA48] = 0x0E; memory[0xA49] = 0x06; memory[0xA4A] = 0x0E; memory[0xA4B] = 0x0A; memory[0xA4C] = 0x15;
	memory[0xA4D] = 0x13; memory[0xA4E] = 0x05; memory[0xA4F] = 0x18; memory[0xA50] = 0x10; memory[0xA51] = 0x07; memory[0xA52] = 0x0C; memory[0xA53] = 0x06; memory[0xA54] = 0x10;
	memory[0xA55] = 0x17; memory[0xA56] = 0x05; memory[0xA57] = 0x16; memory[0xA58] = 0x13; memory[0xA59] = 0x09; memory[0xA5A] = 0x0A; memory[0xA5B] = 0x05; memory[0xA5C] = 0x0C;
	memory[0xA5D] = 0x1A; memory[0xA5E] = 0x07; memory[0xA5F] = 0x14; memory[0xA60] = 0x14; memory[0xA61] = 0x0C; memory[0xA62] = 0x09; memory[0xA63] = 0x08; memory[0xA64] = 0x07;
	memory[0xA65] = 0x11; memory[0xA66] = 0x14; memory[0xA67] = 0x1C; memory[0xA68] = 0x0A; memory[0xA69] = 0x05; memory[0xA6A] = 0x11; memory[0xA6B] = 0x0C; memory[0xA6C] = 0x04;
	memory[0xA6D] = 0x0E; memory[0xA6E] = 0x13; memory[0xA6F] = 0x1D; memory[0xA70] = 0x0D; memory[0xA71] = 0x04; memory[0xA72] = 0x0F; memory[0xA73] = 0x0D; memory[0xA74] = 0x11;
	memory[0xA75] = 0x11; memory[0xA76] = 0x03; memory[0xA77] = 0x1D; memory[0xA78] = 0x10; memory[0xA79] = 0x03; memory[0xA7A] = 0x0D; memory[0xA7B] = 0x0E; memory[0xA7C] = 0x0F;
	memory[0xA7D] = 0x16; memory[0xA7E] = 0x04; memory[0xA7F] = 0x1B; memory[0xA80] = 0x13; memory[0xA81] = 0x04; memory[0xA82] = 0x09; memory[0xA83] = 0x10; memory[0xA84] = 0x0E;
	memory[0xA85] = 0x19; memory[0xA86] = 0x07; memory[0xA87] = 0x06; memory[0xA88] = 0x07; memory[0xA89] = 0x06; memory[0xA8A] = 0x15; memory[0xA8B] = 0x12; memory[0xA8C] = 0x0E;
	memory[0xA8D] = 0x04; memory[0xA8E] = 0x13; memory[0xA8F] = 0x09; memory[0xA90] = 0x05; memory[0xA91] = 0x16; memory[0xA92] = 0x17; memory[0xA93] = 0x14; memory[0xA94] = 0x0E;
	memory[0xA95] = 0x03; memory[0xA96] = 0x10; memory[0xA97] = 0x0D; memory[0xA98] = 0x04; memory[0xA99] = 0x12; memory[0xA9A] = 0x18; memory[0xA9B] = 0x03; memory[0xA9C] = 0x0E;
	memory[0xA9D] = 0x16; memory[0xA9E] = 0x10; memory[0xA9F] = 0x11; memory[0xAA0] = 0x03; memory[0xAA1] = 0x0E; memory[0xAA2] = 0x18; memory[0xAA3] = 0x04; memory[0xAA4] = 0x0E;
	memory[0xAA5] = 0x16; memory[0xAA6] = 0x12; memory[0xAA7] = 0x14; memory[0xAA8] = 0x04; memory[0xAA9] = 0x0B; memory[0xAAA] = 0x17; memory[0xAAB] = 0x05; memory[0xAAC] = 0x0E;
	memory[0xAAD] = 0x18; memory[0xAAE] = 0x06; memory[0xAAF] = 0x15; memory[0xAB0] = 0x13; memory[0xAB1] = 0x0B; memory[0xAB2] = 0x0A; memory[0xAB3] = 0x05; memory[0xAB4] = 0x0E;
	memory[0xAB5] = 0x1A; memory[0xAB6] = 0x08; memory[0xAB7] = 0x13; memory[0xAB8] = 0x15; memory[0xAB9] = 0x0C; memory[0xABA] = 0x08; memory[0xABB] = 0x05; memory[0xABC] = 0x0E;
	memory[0xABD] = 0x1B; memory[0xABE] = 0x0B; memory[0xABF] = 0x11; memory[0xAC0] = 0x15; memory[0xAC1] = 0x0E; memory[0xAC2] = 0x07; memory[0xAC3] = 0x1B; memory[0xAC4] = 0x0E;
	memory[0xAC5] = 0x04; memory[0xAC6] = 0x0E; memory[0xAC7] = 0x0F; memory[0xAC8] = 0x15; memory[0xAC9] = 0x0F; memory[0xACA] = 0x07; memory[0xACB] = 0x19; memory[0xACC] = 0x10;
	memory[0xACD] = 0x03; memory[0xACE] = 0x0D; memory[0xACF] = 0x11; memory[0xAD0] = 0x07; memory[0xAD1] = 0x0E; memory[0xAD2] = 0x15; memory[0xAD3] = 0x15; memory[0xAD4] = 0x12;
	memory[0xAD5] = 0x02; memory[0xAD6] = 0x0C; memory[0xAD7] = 0x13; memory[0xAD8] = 0x07; memory[0xAD9] = 0x0C; memory[0xADA] = 0x14; memory[0xADB] = 0x11; memory[0xADC] = 0x12;
	memory[0xADD] = 0x03; memory[0xADE] = 0x0A; memory[0xADF] = 0x14; memory[0xAE0] = 0x08; memory[0xAE1] = 0x0B; memory[0xAE2] = 0x14; memory[0xAE3] = 0x0D; memory[0xAE4] = 0x11;
	memory[0xAE5] = 0x15; memory[0xAE6] = 0x08; memory[0xAE7] = 0x05; memory[0xAE8] = 0x08; memory[0xAE9] = 0x1A; memory[0xAEA] = 0x14; memory[0xAEB] = 0x0A; memory[0xAEC] = 0x0E;
	memory[0xAED] = 0x18; memory[0xAEE] = 0x16; memory[0xAEF] = 0x17; memory[0xAF0] = 0x09; memory[0xAF1] = 0x08; memory[0xAF2] = 0x06; memory[0xAF3] = 0x0A; memory[0xAF4] = 0x0B;
	memory[0xAF5] = 0x15; memory[0xAF6] = 0x18; memory[0xAF7] = 0x18; memory[0xAF8] = 0x0B; memory[0xAF9] = 0x08; memory[0xAFA] = 0x11; memory[0xAFB] = 0x0C; memory[0xAFC] = 0x07;
	memory[0xAFD] = 0x12; memory[0xAFE] = 0x18; memory[0xAFF] = 0x19; memory[0xB00] = 0x0C; memory[0xB01] = 0x07; memory[0xB02] = 0x10; memory[0xB03] = 0x10; memory[0xB04] = 0x17;
	memory[0xB05] = 0x10; memory[0xB06] = 0x05; memory[0xB07] = 0x06; memory[0xB08] = 0x0E; memory[0xB09] = 0x19; memory[0xB0A] = 0x0E; memory[0xB0B] = 0x0E; memory[0xB0C] = 0x15;
	memory[0xB0D] = 0x14; memory[0xB0E] = 0x05; memory[0xB0F] = 0x07; memory[0xB10] = 0x0C; memory[0xB11] = 0x18; memory[0xB12] = 0x10; memory[0xB13] = 0x0E; memory[0xB14] = 0x13;
	memory[0xB15] = 0x19; memory[0xB16] = 0x06; memory[0xB17] = 0x08; memory[0xB18] = 0x0A; memory[0xB19] = 0x17; memory[0xB1A] = 0x12; memory[0xB1B] = 0x0F; memory[0xB1C] = 0x12;
	memory[0xB1D] = 0x1C; memory[0xB1E] = 0x09; memory[0xB1F] = 0x0B; memory[0xB20] = 0x08; memory[0xB21] = 0x05; memory[0xB22] = 0x12; memory[0xB23] = 0x11; memory[0xB24] = 0x11;
	memory[0xB25] = 0x0E; memory[0xB26] = 0x07; memory[0xB27] = 0x02; memory[0xB28] = 0x0F; memory[0xB29] = 0x1C; memory[0xB2A] = 0x0D; memory[0xB2B] = 0x12; memory[0xB2C] = 0x12;
	memory[0xB2D] = 0x02; memory[0xB2E] = 0x0C; memory[0xB2F] = 0x12; memory[0xB30] = 0x07; memory[0xB31] = 0x0D; memory[0xB32] = 0x14; memory[0xB33] = 0x13; memory[0xB34] = 0x14;
	memory[0xB35] = 0x05; memory[0xB36] = 0x08; memory[0xB37] = 0x16; memory[0xB38] = 0x09; memory[0xB39] = 0x0A; memory[0xB3A] = 0x13; memory[0xB3B] = 0x12; memory[0xB3C] = 0x16;
	memory[0xB3D] = 0x0A; memory[0xB3E] = 0x05; memory[0xB3F] = 0x18; memory[0xB40] = 0x0B; memory[0xB41] = 0x07; memory[0xB42] = 0x11; memory[0xB43] = 0x0F; memory[0xB44] = 0x17;
	memory[0xB45] = 0x10; memory[0xB46] = 0x05; memory[0xB47] = 0x19; memory[0xB48] = 0x0E; memory[0xB49] = 0x06; memory[0xB4A] = 0x0E; memory[0xB4B] = 0x15; memory[0xB4C] = 0x07;
	memory[0xB4D] = 0x0C; memory[0xB4E] = 0x17; memory[0xB4F] = 0x07; memory[0xB50] = 0x0C; memory[0xB51] = 0x18; memory[0xB52] = 0x10; memory[0xB53] = 0x19; memory[0xB54] = 0x0C;
	memory[0xB55] = 0x08; memory[0xB56] = 0x17; memory[0xB57] = 0x09; memory[0xB58] = 0x09; memory[0xB59] = 0x16; memory[0xB5A] = 0x12; memory[0xB5B] = 0x1A; memory[0xB5C] = 0x10;
	memory[0xB5D] = 0x05; memory[0xB5E] = 0x15; memory[0xB5F] = 0x0B; memory[0xB60] = 0x08; memory[0xB61] = 0x13; memory[0xB62] = 0x13; memory[0xB63] = 0x17; memory[0xB64] = 0x15;
	memory[0xB65] = 0x0E; memory[0xB66] = 0x08; memory[0xB67] = 0x03; memory[0xB68] = 0x12; memory[0xB69] = 0x1A; memory[0xB6A] = 0x0B; memory[0xB6B] = 0x13; memory[0xB6C] = 0x18;
	memory[0xB6D] = 0x11; memory[0xB6E] = 0x09; memory[0xB6F] = 0x02; memory[0xB70] = 0x0F; memory[0xB71] = 0x1B; memory[0xB72] = 0x0D; memory[0xB73] = 0x12; memory[0xB74] = 0x0B;
	memory[0xB75] = 0x0E; memory[0xB76] = 0x19; memory[0xB77] = 0x02; memory[0xB78] = 0x0C; memory[0xB79] = 0x1C; memory[0xB7A] = 0x0F; memory[0xB7B] = 0x11; memory[0xB7C] = 0x0D;
	memory[0xB7D] = 0x09; memory[0xB7E] = 0x18; memory[0xB7F] = 0x04; memory[0xB80] = 0x09; memory[0xB81] = 0x1B; memory[0xB82] = 0x13; memory[0xB83] = 0x10; memory[0xB84] = 0x10;
	memory[0xB85] = 0x0C; memory[0xB86] = 0x14; memory[0xB87] = 0x07; memory[0xB88] = 0x17; memory[0xB89] = 0x04; memory[0xB8A] = 0x1A; memory[0xB8B] = 0x03; memory[0xB8C] = 0x1C;
	memory[0xB8D] = 0x03; memory[0xB8E] = 0x1D; memory[0xB8F] = 0x05; memory[0xB90] = 0x1D; memory[0xB91] = 0x08; memory[0xB92] = 0x1B; memory[0xB93] = 0x0C; memory[0xB94] = 0x19;
	memory[0xB95] = 0x10; memory[0xB96] = 0x16; memory[0xB97] = 0x14; memory[0xB98] = 0x13; memory[0xB99] = 0x17; memory[0xB9A] = 0x10; memory[0xB9B] = 0x1A; memory[0xB9C] = 0x0D;
	memory[0xB9D] = 0x1B; memory[0xB9E] = 0x0A; memory[0xB9F] = 0x1B; memory[0xBA0] = 0x08; memory[0xBA1] = 0x19; memory[0xBA2] = 0x06; memory[0xBA3] = 0x17; memory[0xBA4] = 0x05;
	memory[0xBA5] = 0x13; memory[0xBA6] = 0x06; memory[0xBA7] = 0x10; memory[0xBA8] = 0x07; memory[0xBA9] = 0x0D; memory[0xBAA] = 0x08; memory[0xBAB] = 0x0A; memory[0xBAC] = 0x0B;
	memory[0xBAD] = 0x07; memory[0xBAE] = 0x0E; memory[0xBAF] = 0x06; memory[0xBB0] = 0x10; memory[0xBB1] = 0x06; memory[0xBB2] = 0x12; memory[0xBB3] = 0x08; memory[0xBB4] = 0x15;
	memory[0xBB5] = 0x0A; memory[0xBB6] = 0x17; memory[0xBB7] = 0x0D; memory[0xBB8] = 0x18; memory[0xBB9] = 0x10; memory[0xBBA] = 0x19; memory[0xBBB] = 0x13; memory[0xBBC] = 0x19;
	memory[0xBBD] = 0x16; memory[0xBBE] = 0x18; memory[0xBBF] = 0x18; memory[0xBC0] = 0x17; memory[0xBC1] = 0x19; memory[0xBC2] = 0x14; memory[0xBC3] = 0x10; memory[0xBC4] = 0x19;
	memory[0xBC5] = 0x0F; memory[0xBC6] = 0x17; memory[0xBC7] = 0x0D; memory[0xBC8] = 0x17; memory[0xBC9] = 0x0A; memory[0xBCA] = 0x19; memory[0xBCB] = 0x06; memory[0xBCC] = 0x1A;
	memory[0xBCD] = 0x06; memory[0xBCE] = 0x16; memory[0xBCF] = 0x09; memory[0xBD0] = 0x13; memory[0xBD1] = 0x09; memory[0xBD2] = 0x11; memory[0xBD3] = 0x07; memory[0xBD4] = 0x10;
	memory[0xBD5] = 0x03; memory[0xBD6] = 0x0E; memory[0xBD7] = 0x03; memory[0xBD8] = 0x0B; memory[0xBD9] = 0x08; memory[0xBDA] = 0x0B; memory[0xBDB] = 0x0B; memory[0xBDC] = 0x0B;
	memory[0xBDD] = 0x0C; memory[0xBDE] = 0x0A; memory[0xBDF] = 0x0C; memory[0xBE0] = 0x06; memory[0xBE1] = 0x0E; memory[0xBE2] = 0x02; memory[0xBE3] = 0x10; memory[0xBE4] = 0x04;
	memory[0xBE5] = 0x11; memory[0xBE6] = 0x08; memory[0xBE7] = 0x12; memory[0xBE8] = 0x0A; memory[0xBE9] = 0x14; memory[0xBEA] = 0x09; memory[0xBEB] = 0x19; memory[0xBEC] = 0x07;
	memory[0xBED] = 0x1B; memory[0xBEE] = 0x09; memory[0xBEF] = 0x19; memory[0xBF0] = 0x0D; memory[0xBF1] = 0x17; memory[0xBF2] = 0x0F; memory[0xBF3] = 0x17; memory[0xBF4] = 0x10;
	memory[0xBF5] = 0x1A; memory[0xBF6] = 0x12; memory[0xBF7] = 0x1D; memory[0xBF8] = 0x15; memory[0xBF9] = 0x1A; memory[0xBFA] = 0x16; memory[0xBFB] = 0x15; memory[0xBFC] = 0x15;
	memory[0xBFD] = 0x14; memory[0xBFE] = 0x16; memory[0xBFF] = 0x13; memory[0xC00] = 0x18; memory[0xC01] = 0x12; memory[0xC02] = 0x1D; memory[0xC03] = 0x10; memory[0xC04] = 0x19;
	memory[0xC05] = 0x0E; memory[0xC06] = 0x17; memory[0xC07] = 0x0D; memory[0xC08] = 0x17; memory[0xC09] = 0x0B; memory[0xC0A] = 0x17; memory[0xC0B] = 0x08; memory[0xC0C] = 0x17;
	memory[0xC0D] = 0x05; memory[0xC0E] = 0x19; memory[0xC0F] = 0x02; memory[0xC10] = 0x19; memory[0xC11] = 0x03; memory[0xC12] = 0x17; memory[0xC13] = 0x08; memory[0xC14] = 0x14;
	memory[0xC15] = 0x0B; memory[0xC16] = 0x12; memory[0xC17] = 0x0E; memory[0xC18] = 0x11; memory[0xC19] = 0x10; memory[0xC1A] = 0x10; memory[0xC1B] = 0x11; memory[0xC1C] = 0x10;
	memory[0xC1D] = 0x14; memory[0xC1E] = 0x0E; memory[0xC1F] = 0x19; memory[0xC20] = 0x0B; memory[0xC21] = 0x1C; memory[0xC22] = 0x09; memory[0xC23] = 0x1C; memory[0xC24] = 0x09;
	memory[0xC25] = 0x19; memory[0xC26] = 0x09; memory[0xC27] = 0x17; memory[0xC28] = 0x0A; memory[0xC29] = 0x16; memory[0xC2A] = 0x0A; memory[0xC2B] = 0x14; memory[0xC2C] = 0x09;
	memory[0xC2D] = 0x13; memory[0xC2E] = 0x07; memory[0xC2F] = 0x11; memory[0xC30] = 0x04; memory[0xC31] = 0x0F; memory[0xC32] = 0x02; memory[0xC33] = 0x0B; memory[0xC34] = 0x03;
	memory[0xC35] = 0x09; memory[0xC36] = 0x06; memory[0xC37] = 0x09; memory[0xC38] = 0x09; memory[0xC39] = 0x09; memory[0xC3A] = 0x0A; memory[0xC3B] = 0x09; memory[0xC3C] = 0x0B;
	memory[0xC3D] = 0x08; memory[0xC3E] = 0x0B; memory[0xC3F] = 0x07; memory[0xC40] = 0x0B; memory[0xC41] = 0x07; memory[0xC42] = 0x0B; memory[0xC43] = 0x10; memory[0xC44] = 0x19;
	memory[0xC45] = 0x13; memory[0xC46] = 0x18; memory[0xC47] = 0x15; memory[0xC48] = 0x17; memory[0xC49] = 0x16; memory[0xC4A] = 0x16; memory[0xC4B] = 0x18; memory[0xC4C] = 0x15;
	memory[0xC4D] = 0x18; memory[0xC4E] = 0x15; memory[0xC4F] = 0x18; memory[0xC50] = 0x14; memory[0xC51] = 0x15; memory[0xC52] = 0x12; memory[0xC53] = 0x10; memory[0xC54] = 0x10;
	memory[0xC55] = 0x0B; memory[0xC56] = 0x0E; memory[0xC57] = 0x09; memory[0xC58] = 0x0C; memory[0xC59] = 0x08; memory[0xC5A] = 0x0C; memory[0xC5B] = 0x09; memory[0xC5C] = 0x0B;
	memory[0xC5D] = 0x0A; memory[0xC5E] = 0x0A; memory[0xC5F] = 0x0B; memory[0xC60] = 0x09; memory[0xC61] = 0x0D; memory[0xC62] = 0x08; memory[0xC63] = 0x10; memory[0xC64] = 0x06;
	memory[0xC65] = 0x14; memory[0xC66] = 0x04; memory[0xC67] = 0x1A; memory[0xC68] = 0x03; memory[0xC69] = 0x1D; memory[0xC6A] = 0x04; memory[0xC6B] = 0x1C; memory[0xC6C] = 0x08;
	memory[0xC6D] = 0x19; memory[0xC6E] = 0x0B; memory[0xC6F] = 0x15; memory[0xC70] = 0x0D; memory[0xC71] = 0x12; memory[0xC72] = 0x0F; memory[0xC73] = 0x10; memory[0xC74] = 0x10;
	memory[0xC75] = 0x0D; memory[0xC76] = 0x11; memory[0xC77] = 0x0A; memory[0xC78] = 0x13; memory[0xC79] = 0x06; memory[0xC7A] = 0x16; memory[0xC7B] = 0x03; memory[0xC7C] = 0x19;
	memory[0xC7D] = 0x03; memory[0xC7E] = 0x1C; memory[0xC7F] = 0x07; memory[0xC80] = 0x1C; memory[0xC81] = 0x0C; memory[0xC82] = 0x1A;
}
